GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Der Abruf öffentlicher Schlüssel ist nicht zulässig – WSO2-MySQL-Fehler

Ich verwende den WSO2 API Manager seit fast einem Jahr, um APIs einfach und sicher sowohl internen als auch externen Verbrauchern zugänglich zu machen. Alles funktionierte einwandfrei, bis das System für Wartungsarbeiten abgeschaltet wurde. Als das System wieder in den normalen Betrieb zurückversetzt wurde, konnte WSO2 mit einigen Ausnahmen in wso2carbon.log nicht gestartet werden Datei – „Verursacht durch:com.mysql.cj.exceptions.UnableToConnectException:Public Key Retrieval ist nicht zulässig“. In diesem Artikel teile ich die Fehlerbehebung.

Fehler Abruf des öffentlichen Schlüssels ist nicht zulässig – WSO2 mit MySQL 8.*

Abgesehen von dem obigen Fehler konnte ich noch ein paar weitere Ausnahmen in der wso2carbon.log sehen Datei, und hier ist die Kopie davon.

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

Wenn ich mir die ersten paar Ausnahmen ansehe, habe ich verstanden, dass der Fehler auf eine MySQL-Verbindung und eine Ausnahme zurückzuführen ist, die bei „com.mysql.cj.jdbc.exceptions.SQLError“ verursacht wurde “ bestätigt es. Der MySQL-Connector scheint ein Problem zu haben und eine schnelle Suche in Google ergab, dass das Problem häufig in MySQL-Version 8 gemeldet wurde.

Das System scheint auf die neueste Version von MySQL aktualisiert worden zu sein, d. h. Version 8.0.26. Vor kurzem hatte ich ein paar Probleme in der MySQL 8-Version behoben, falls Sie einen Blick darauf werfen möchten. Kommen wir nun zu diesem Thema zurück. Die meisten Foren schlugen vor, 'allowPublicKeyRetrieval=true' hinzuzufügen an die MySQL-Verbindungs-URL und es hat auch funktioniert.

Fügen Sie in WSO2 „allowPublicKeyRetrieval=true hinzu ‘ zur deployment.toml Datei wie unten gezeigt:

[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"
........................

Hinweis :der &amp; vor allowPublicKeyRetrieval=true in der Verbindungs-URL. Das Hinzufügen von nur „&“ anstelle von „&“ würde zu folgendem Fehler führen:

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].
kann nicht gefunden werden

Sobald die Änderungen vorgenommen wurden, starten Sie den WSO-Dienst neu. Das ist es!

Die Option allowPublicKeyRetrieval=true ermöglicht es dem Client, den öffentlichen Schlüssel automatisch vom Server anzufordern. Lesen Sie hier mehr über die MySQL-Optionen.

Vorsicht

Wenn Sie WSO2 auf einem Produktionsserver ausführen, wird useSSL=false nicht empfohlen. allowPublicKeyRetrieval=True könnte einen Man-in-the-Middle-Angriff über einen böswilligen Proxy ermöglichen, um das Klartext-Passwort zu erhalten. allowPublicKeyRetrieval ist standardmäßig False und muss explizit aktiviert werden. Wenn Sie eine gesicherte Verbindung zur Datenbank verwenden, versuchen Sie, useSSL=false aus der Verbindungs-URL zu entfernen. Dadurch könnte das Problem behoben werden.


Linux
  1. [Behoben] Host darf sich nicht mit diesem MySQL-Server verbinden

  2. Wie behebt man den Fehler „GPG-Schlüsselabruf fehlgeschlagen“ während der YUM-Installation?

  3. Signaturüberprüfung beim öffentlichen SPKAC-Schlüssel fehlgeschlagen – OpenCA-Fehler behoben

  4. Ssh akzeptiert keinen öffentlichen Schlüssel?

  5. So beheben Sie den GPG-Fehler „Kein öffentlicher Schlüssel NO_PUBKEY“ während des apt-get-Updates

Grundlegende Konzepte der Verschlüsselung in der Kryptographie

If…else…if-Anweisung (Fehler „Befehl nicht gefunden“)?

So fügen Sie dem Server einen öffentlichen SSH-Schlüssel hinzu

MySQL schlägt fehl bei:mysql ERROR 1524 (HY000):Plugin „auth_socket“ ist nicht geladen

Warum gibt das Hinzufügen einer lokalen IP und eines Benutzernamens in scp einen Public-Key-Fehler zurück?

So kopieren Sie einen öffentlichen Schlüssel auf Ihren Server