GNU/Linux >> Znalost Linux >  >> Linux

Načítání veřejného klíče není povoleno – chyba WSO2 MySQL

Již téměř rok používám WSO2 API Manager ke snadnému a bezpečnému vystavení API interním i externím spotřebitelům. Vše fungovalo dobře, dokud nebyl systém odstaven z důvodu údržby. Když byl systém obnoven zpět do normálního provozu, WSO2 se nepodařilo spustit s několika výjimkami v wso2carbon.log soubor – „Způsobeno:com.mysql.cj.exceptions.UnableToConnectException:Načítání veřejného klíče není povoleno.“ V tomto článku se podělím o opravu.

Chyba načítání veřejného klíče není povoleno  – WSO2 s MySQL 8.*

Kromě výše uvedené chyby jsem v wso2carbon.log viděl několik dalších výjimek a zde je jeho kopie.

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

Když jsem se podíval na několik prvních výjimek, pochopil jsem, že chyba je způsobena připojením MySQL a výjimkou způsobenou na adrese „com.mysql.cj.jdbc.exceptions.SQLError ‘ potvrzuje to. Zdá se, že konektor MySQL má nějaký problém a rychlé vyhledávání na Googlu odhalilo, že problém byl běžně hlášen v MySQL verze 8.

Zdá se, že systém byl aktualizován na nejnovější verzi MySQL, tj. verzi 8.0.26. Nedávno jsem opravil několik problémů ve verzi MySQL 8, pro případ, že byste se na to chtěli podívat. Nyní se vraťme k této problematice. Většina fór navrhla přidat 'allowPublicKeyRetrieval=true' na adresu URL připojení MySQL a fungovalo to také.

Ve WSO2 přidejte ‘allowPublicKeyRetrieval=true ‘ do deployment.toml soubor, jak je uvedeno níže:

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

Poznámka :&amp; před allowPublicKeyRetrieval=true v adrese URL připojení. Přidání pouze „&“ místo „&“ by vedlo k níže uvedené chybě:

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

Po provedení změn restartujte službu WSO. To je ono!

Možnost allowPublicKeyRetrieval=true umožňuje klientovi automaticky požadovat veřejný klíč ze serveru. Přečtěte si více o možnostech MySQL zde.

Pozor

Pokud používáte WSO2 na produkčním serveru, useSSL=false se nedoporučuje. allowPublicKeyRetrieval=True by mohl umožnit útok typu man-in-the-middle prostřednictvím škodlivého proxy, aby získal heslo ve formátu prostého textu. allowPublicKeyRetrieval je ve výchozím nastavení False a musí být explicitně povoleno. Pokud používáte zabezpečené připojení k databázi, zkuste z adresy URL připojení odstranit useSSL=false a to by mohlo problém vyřešit.


Linux
  1. [Opraveno] Hostitel se nemůže připojit k tomuto serveru MySQL

  2. Příkaz yum-config-manager nenalezen [Opravit]

  3. Registrované zpětné volání se neshoduje s poskytnutou URL – Fix WSO2 Error

  1. c_rehash :Chyba příkazu nenalezena – Řešení

  2. chyba crontab:"Vy (uživatel) nemáte povolen přístup k (crontab) kvůli konfiguraci pam."

  3. gpg:příkaz nenalezen

  1. Jak opravit chybu „Načítání klíče GPG se nezdařilo“ během instalace YUM?

  2. Ověření podpisu na veřejném klíči SPKAC se nezdařilo – Oprava chyby OpenCA

  3. Jak zkopírovat veřejný klíč na váš server