Mysql
 sql >> база данни >  >> RDS >> Mysql

Защо Java не може да се свърже с MySQL 5.7 след последната актуализация на JDK и как трябва да се коригира? (ssl.SSLHandshakeException:Няма подходящ протокол)

Както @skelwa вече коментира, ще трябва да добавите enabledTLSProtocols=TLSv1.2 конфигурационното свойство в низа за връзка, за да разрешите проблема си.

Пълен низ за връзка за Connector/J може да изглежда така:

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

За r2dbc ще трябва да използвате tlsVersion=TLSv1.2 вместо това.

Въпросът, който остава, е:

Защо JDK и MySQL просто не се споразумеят за използването на TLSv1.2 ?

Въпреки че и двете страни действително поддържат TLSv1.2, проблемът, който изпитвате, е въведен от поведението по подразбиране на Connector/J. От съображения за съвместимост Connector/J не активира TLSv1.2 и по-високи по подразбиране. Следователно, човек трябва да го активира изрично.

Вижте следната забележка :

ПРЕДУПРЕЖДЕНИЕ: моля, имайте предвид, че решения предлага редактиране на jdk.tls.disabledAlgorithms вътре в jre/lib/security представляватриск за сигурността към вашето приложение и промяната на нещо там може да има сериозни последици! Има причини, поради които тези протоколи са били деактивирани и човек не трябва просто да премахва всичко или дори само части от този списък.

Забележка: ако искате да получите по-ниско ниво на прозрения от JDK за отстраняване на грешки, можете да активирате ssl регистрационните файлове за отстраняване на грешки, като предадете следната конфигурация на java командата:

-Djavax.net.debug=ssl,handshake или дори-Djavax.net.debug=all

Във вашия случай ще видите нещо като:

...(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. Конкатенация на низ и идентификатор на първичен ключ по време на вмъкване

  2. грешка:команда 'x86_64-linux-gnu-gcc' при инсталиране на mysqlclient

  3. Изпращане на формуляр с помощта на <input type =button>

  4. MySQL - SELECT * INTO OUTFILE LOCAL ?

  5. PostgreSQL срещу MySQL, сравнение