GNU/Linux >> Linux Esercitazione >  >> Linux

Il recupero della chiave pubblica non è consentito – Errore MySQL WSO2

Uso WSO2 API Manager da quasi un anno per esporre le API in modo facile e sicuro a consumatori interni ed esterni. Tutto ha funzionato bene fino a quando il sistema non è stato disattivato per attività di manutenzione. Quando il sistema è stato ripreso al servizio normale, WSO2 non è stato avviato con alcune eccezioni nel wso2carbon.log file – "Causato da:com.mysql.cj.exceptions.UnableToConnectException:il recupero della chiave pubblica non è consentito". In questo articolo condividerò la correzione.

Il recupero della chiave pubblica di errore non è consentito  – WSO2 con MySQL 8.*

A parte l'errore di cui sopra, potrei vedere alcune altre eccezioni in wso2carbon.log file, ed eccone una copia.

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

Osservando le prime eccezioni, ho capito che l'errore è dovuto alla connessione MySQL e all'eccezione causata da "com.mysql.cj.jdbc.exceptions.SQLError ' lo conferma. Il connettore MySQL sembra avere qualche problema e una rapida ricerca su Google ha rivelato che il problema veniva comunemente segnalato in MySQL versione 8.

Il sistema sembra essere aggiornato all'ultima versione di MySQL, ovvero la versione 8.0.26. Molto recentemente ho risolto un paio di problemi nella versione MySQL 8, nel caso in cui volessi dargli un'occhiata. Ora tornando su questo problema. La maggior parte dei forum ha suggerito di aggiungere 'allowPublicKeyRetrieval=true' all'URL di connessione MySQL e ha funzionato ugualmente.

In WSO2, aggiungi "allowPublicKeyRetrieval=true ' al deployment.toml file come mostrato di seguito:

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

Nota :il &amp; prima di allowPublicKeyRetrieval=true nell'URL di connessione. L'aggiunta di solo "&" invece di "&" comporterebbe il seguente errore:

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].

Una volta apportate le modifiche, riavviare il servizio WSO. Questo è tutto!

L'opzione allowPublicKeyRetrieval=true consente al client di richiedere automaticamente la chiave pubblica dal server. Leggi di più sulle opzioni MySQL qui.

Attenzione

Se stai eseguendo WSO2 su un server di produzione, useSSL=false non è consigliato. allowPublicKeyRetrieval=True potrebbe consentire l'attacco man-in-the-middle tramite proxy dannoso per ottenere la password in chiaro. allowPublicKeyRetrieval è False per impostazione predefinita e deve essere abilitato in modo esplicito. Se utilizzi una connessione protetta al database, prova a rimuovere useSSL=false dall'URL di connessione e ciò potrebbe risolvere il problema.


Linux
  1. Ssh non accetta la chiave pubblica?

  2. ssh-keygen:comando non trovato

  3. gpg:comando non trovato

  4. MySQL - ERRORE 1045 - Accesso negato

  5. Installazione di R dal repository Ubuntu CRAN:nessun errore di chiave pubblica

Concetti di base della crittografia in crittografia

If...else...if Statement (comando non trovato errore)?

Come aggiungere la chiave pubblica SSH al server

Come risolvere l'errore GPG Nessuna chiave pubblica NO_PUBKEY durante l'aggiornamento apt-get

errore crontab:"Tu (utente) non sei autorizzato ad accedere a (crontab) a causa della configurazione di pam."

MySQL fallisce su:mysql ERROR 1524 (HY000):il plugin 'auth_socket' non è caricato