Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Mengapa Java tidak dapat terhubung ke MySQL 5.7 setelah pembaruan JDK terbaru dan bagaimana cara memperbaikinya? (ssl.SSLHandshakeException:Tidak ada protokol yang sesuai)

Karena @skelwa sudah berkomentar, Anda perlu menambahkan enabledTLSProtocols=TLSv1.2 konfigurasi properti di string koneksi untuk menyelesaikan masalah Anda.

String koneksi lengkap untuk Connector/J bisa terlihat seperti ini:

jdbc:mysql://<host>:<port>/<dbname>?enabledTLSProtocols=TLSv1.2

Untuk r2dbc anda harus menggunakan tlsVersion=TLSv1.2 sebagai gantinya.

Pertanyaan yang tersisa adalah:

Mengapa JDK dan MySQL tidak menyetujui penggunaan TLSv1.2 ?

Meskipun kedua pihak benar-benar mendukung TLSv1.2, masalah yang Anda alami disebabkan oleh perilaku default Connector/J. Untuk alasan kompatibilitas, Konektor/J tidak mengaktifkan TLSv1.2 dan lebih tinggi secara default. Oleh karena itu, seseorang harus mengaktifkannya secara eksplisit.

Lihat catatan :

PERINGATAN: perlu diketahui bahwa solusi menyarankan pengeditan jdk.tls.disabledAlgorithms di dalam jre/lib/security menimbulkan risiko keamanan ke aplikasi Anda dan mengubah apa pun di sana mungkin memiliki implikasi yang parah! Ada alasan mengapa protokol tersebut dinonaktifkan dan seseorang tidak boleh begitu saja menghapus semuanya atau bahkan hanya sebagian dari daftar itu.

Catatan: jika Anda ingin mendapatkan lebih banyak wawasan tingkat rendah dari JDK untuk men-debug masalah Anda, Anda dapat mengaktifkan log debug ssl dengan meneruskan konfigurasi berikut ke perintah java:

-Djavax.net.debug=ssl,handshake atau bahkan-Djavax.net.debug=all

Dalam kasus Anda, Anda akan melihat sesuatu seperti:

...(HANDSHAKE_FAILURE): Couldn't kickstart handshaking (
"throwable" : {
  javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
    at java.base/sun.security.ssl.HandshakeContext.<init>(HandshakeContext.java:170)
    at java.base/sun.security.ssl.ClientHandshakeContext.<init>(ClientHandshakeContext.java:98)
    ...


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. apa arti pengguna yang tidak diautentikasi di MYSQL?

  2. cara menyimpan nilai hash di kolom tabel di Rails

  3. Kesalahan umum:1005 Tidak dapat membuat tabel Menggunakan Bangun Skema Laravel dan Kunci Asing

  4. Memasukkan gambar ke dalam database

  5. Cara memperluas bidang yang dipisahkan koma menjadi beberapa baris di MySQL