GNU/Linux >> Belajar Linux >  >> Linux

Pengambilan Kunci Publik tidak diizinkan – Kesalahan MySQL WSO2

Saya telah menggunakan WSO2 API Manager selama hampir satu tahun untuk mengekspos API dengan mudah dan aman ke konsumen internal dan eksternal. Semuanya bekerja dengan baik sampai sistem diturunkan untuk aktivitas pemeliharaan. Ketika sistem dilanjutkan kembali ke layanan normal, WSO2 gagal memulai dengan beberapa pengecualian di wso2carbon.log file – “Disebabkan oleh:com.mysql.cj.exceptions.UnableToConnectException:Pengambilan Kunci Publik tidak diizinkan”. Dalam artikel ini, saya akan membagikan perbaikannya.

Error Public Key Retrieval tidak diizinkan  – WSO2 dengan MySQL 8.*

Terlepas dari kesalahan di atas, saya dapat melihat beberapa pengecualian lagi di wso2carbon.log file, dan ini salinannya.

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

Melihat beberapa pengecualian pertama, saya mengerti bahwa kesalahan ini disebabkan oleh koneksi MySQL dan pengecualian yang disebabkan di 'com.mysql.cj.jdbc.exceptions.SQLError ' menegaskannya. Konektor MySQL tampaknya memiliki beberapa masalah dan pencarian cepat di Google mengungkapkan bahwa masalah tersebut umumnya dilaporkan di MySQL versi 8.

Sistem tampaknya telah diperbarui ke versi terbaru MySQL yaitu, versi 8.0.26. Baru-baru ini saya telah memperbaiki beberapa masalah dalam versi MySQL 8, jika Anda ingin melihatnya. Sekarang kembali ke masalah ini. Sebagian besar forum menyarankan untuk menambahkan 'allowPublicKeyRetrieval=true' ke URL koneksi MySQL dan berhasil juga.

Di WSO2, tambahkan ‘allowPublicKeyRetrieval=true ' ke deployment.toml file seperti yang ditunjukkan di bawah ini:

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

Catatan :&amp; sebelum allowPublicKeyRetrieval=true di URL koneksi. Menambahkan hanya '&' alih-alih '&' akan menghasilkan kesalahan di bawah ini:

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

Setelah perubahan dibuat, mulai ulang layanan WSO. Itu dia!

Opsi allowPublicKeyRetrieval=true memungkinkan klien untuk secara otomatis meminta kunci publik dari server. Baca selengkapnya tentang opsi MySQL di sini.

Peringatan

Jika Anda menjalankan WSO2 di server produksi, useSSL=false tidak disarankan. allowPublicKeyRetrieval=True dapat memungkinkan serangan man-in-the-middle melalui proxy jahat untuk mendapatkan kata sandi plaintext. allowPublicKeyRetrieval adalah False secara default dan harus diaktifkan secara eksplisit. Jika Anda menggunakan koneksi aman ke database, coba hapus useSSL=false dari URL koneksi dan itu dapat memperbaiki masalah.


Linux
  1. perintah yum-config-manager tidak ditemukan [Perbaiki]

  2. Panggilan balik terdaftar tidak cocok dengan URL yang disediakan – Perbaiki Kesalahan WSO2

  3. c_rehash :Perintah tidak ditemukan kesalahan – Solusi

  1. kesalahan crontab:"Anda (pengguna) tidak diizinkan untuk mengakses (crontab) karena konfigurasi pam."

  2. ssh-keygen:perintah tidak ditemukan

  3. MySQL gagal:mysql ERROR 1524 (HY000):Plugin 'auth_socket' tidak dimuat

  1. [Tetap] Host tidak diizinkan untuk terhubung ke server MySQL ini

  2. Bagaimana Memperbaiki Kesalahan 'Pengambilan kunci GPG gagal' selama Instalasi YUM?

  3. Verifikasi tanda tangan gagal pada kunci publik SPKAC – Perbaiki kesalahan OpenCA