GNU/Linux >> Tutoriels Linux >  >> Linux

La récupération de la clé publique n'est pas autorisée - Erreur WSO2 MySQL

J'utilise WSO2 API Manager depuis près d'un an pour exposer facilement et en toute sécurité les API aux consommateurs internes et externes. Tout fonctionnait bien jusqu'à ce que le système soit retiré pour des activités de maintenance. Lorsque le système a été remis en service normal, WSO2 n'a pas pu démarrer avec quelques exceptions dans le wso2carbon.log file - "Causé par :com.mysql.cj.exceptions.UnableToConnectException :la récupération de la clé publique n'est pas autorisée". Dans cet article, je vais partager le correctif.

Erreur La récupération de la clé publique n'est pas autorisée – WSO2 avec MySQL 8.*

Outre l'erreur ci-dessus, j'ai pu voir quelques exceptions supplémentaires dans le wso2carbon.log fichier, et en voici la copie.

ERROR {org.wso2.carbon.user.core.internal.Activator} - Cannot start User Manager Core bundle org.wso2.carbon.user.core.UserStoreException: Cannot initialize the realm.
at org.wso2.carbon.user.core.common.DefaultRealmService.initializeRealm(DefaultRealmService.java:286)
at org.wso2.carbon.user.core.common.DefaultRealmService.<init>(DefaultRealmService.java:102)

:::::::::::::::::::::::::::::::::::::::::::::::::

Caused by: java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110)
at 


:::::::::::::::::::::::::::::::::::::::::::

ERROR {org.wso2.carbon.user.core.internal.Activator} - Cannot start User Manager Core bundle org.wso2.carbon.user.core.UserStoreException: Cannot initialize the realm.
at org.wso2.carbon.user.core.common.DefaultRealmService.initializeRealm(DefaultRealmService.java:286)


::::::::::::::::::::::::::::::::::::::::::

Caused by: org.wso2.carbon.user.core.UserStoreException: DB error occurred while persisting domain : PRIMARY & tenant id : -1234

En regardant les premières exceptions, j'ai compris que l'erreur est due à la connexion MySQL et à l'exception causée à 'com.mysql.cj.jdbc.exceptions.SQLError ' le confirme. Le connecteur MySQL semble avoir un problème et une recherche rapide dans Google a révélé que le problème était couramment signalé dans MySQL version 8.

Le système semble avoir été mis à jour vers la dernière version de MySQL, c'est-à-dire la version 8.0.26. Très récemment, j'ai corrigé quelques problèmes dans la version MySQL 8, au cas où vous voudriez y jeter un coup d'œil. Revenons maintenant à cette question. La plupart des forums ont suggéré d'ajouter 'allowPublicKeyRetrieval=true' à l'URL de connexion MySQL et cela a également fonctionné.

Dans WSO2, ajoutez 'allowPublicKeyRetrieval=true ‘ au deployment.toml fichier comme indiqué ci-dessous :

[database.apim_db]
type = "mysql"
#Henry - Retain mysql connnection string as localhost always
url = "jdbc:mysql://localhost:3306/apim_db?useSSL=false&amp;allowPublicKeyRetrieval=true"
.............

[database.shared_db]
type = "mysql"
#Henry - Retain mysql connnection string as localhost always
url = "jdbc:mysql://localhost:3306/shared_db?useSSL=false&amp;allowPublicKeyRetrieval=true"
........................

Remarque :le &amp; avant allowPublicKeyRetrieval=true dans l'URL de connexion. L'ajout de "&" au lieu de "&" entraînerait l'erreur ci-dessous :

Caused by: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character '=' (code 61); expected a semi-colon after the reference for entity 'allowPublicKeyRetrieval'
at [row,col {unknown-source}]: [39,100]


ERROR {org.wso2.carbon.user.core.internal.Activator} - Cannot start User Manager Core bundle java.lang.RuntimeException: Error in looking up data source: Name [jdbc/SHARED_DB] is not bound in this Context. Unable to find [jdbc].

Une fois les modifications apportées, redémarrez le service WSO. C'est tout !

L'option allowPublicKeyRetrieval=true permet au client de demander automatiquement la clé publique au serveur. En savoir plus sur les options MySQL ici.

Mise en garde

Si vous exécutez WSO2 sur un serveur de production, useSSL=false n'est pas recommandé. allowPublicKeyRetrieval=True pourrait permettre à une attaque de l'homme du milieu via un proxy malveillant d'obtenir le mot de passe en clair. allowPublicKeyRetrieval a la valeur False par défaut et doit être explicitement activé. Si vous utilisez une connexion sécurisée à la base de données, essayez de supprimer useSSL=false de l'URL de connexion et cela pourrait résoudre le problème.


Linux
  1. [Fixe] L'hôte n'est pas autorisé à se connecter à ce serveur MySQL

  2. Comment réparer l'erreur "Échec de la récupération de la clé GPG" lors de l'installation de YUM ?

  3. Commande yum-config-manager introuvable [Réparer]

  4. La vérification de la signature a échoué sur la clé publique SPKAC - Correction de l'erreur OpenCA

  5. Le rappel enregistré ne correspond pas à l'URL fournie - Correction de l'erreur WSO2

Concepts de base du cryptage en cryptographie

If…else…if Statement (erreur de commande introuvable) ?

Comment ajouter une clé publique SSH au serveur

erreur crontab :"Vous (utilisateur) n'êtes pas autorisé à accéder à (crontab) en raison de la configuration pam."

MySQL - ERREUR 1045 - Accès refusé

MySQL échoue sur :ERREUR mysql 1524 (HY000) :le plug-in 'auth_socket' n'est pas chargé