Соединение jdbc с mysql mysqld 8.0.37 через SSLJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Соединение jdbc с mysql mysqld 8.0.37 через SSL

Сообщение Anonymous »

У меня есть один сервер приложений и один сервер базы данных, оба Linux, сервер приложений использует tomcat, и мы подключаемся к серверу БД MySql с помощью JDBC, до сих пор у меня не возникло никаких проблем, поскольку SSL не был включен на сервере БД. p>
Теперь из-за требований безопасности подключение к серверу базы данных mysql через SSL является обязательным.
На моем сервере приложений установлена ​​следующая версия Java:

Код: Выделить всё

java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)
до сих пор я следовал нижеприведенному процессу.
Я импортировал сертификат клиента MySQL в хранилище ключей сервера приложений, используя команду ниже:

Код: Выделить всё

keytool -importcert -keystore /usr/java/default/jre/lib/security/cacerts -storepass 123@123@456 -alias mysqlclient -file client-keystore.cer
он ​​был успешно импортирован без каких-либо ошибок.
Теперь я пытаюсь установить соединение с MySQL, используя приведенную ниже строку подключения.

Код: Выделить всё

conn = DriverManager.getConnection("jdbc:mysql://XX.X.XXX.XX:XXXX/Mydb?verifyServerCertificate=false&useSSL=true&requireSSL=true&enabledTLSProtocols=TLSv1.2","user","pwd");
Я получаю следующую ошибку/исключение

Код: Выделить всё

com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:165)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:55)
at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:845)
at com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:420)
at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:238)
at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:180)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at TestConn_1.main(TestConn_1.java:21)
Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:52)
at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:95)
at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:140)
at com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:156)
at com.mysql.cj.protocol.a.NativeProtocol.negotiateSSLConnection(NativeProtocol.java:367)
at com.mysql.cj.protocol.a.NativeAuthenticationProvider.connect(NativeAuthenticationProvider.java:198)
at com.mysql.cj.protocol.a.NativeProtocol.connect(NativeProtocol.java:1336)
at com.mysql.cj.NativeSession.connect(NativeSession.java:153)
at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:969)
at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:833)
...  6 more
Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.Alerts.getSSLException(Alerts.java:154)
at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:2020)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1127)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1367)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1395)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1379)
at com.mysql.cj.protocol.ExportControlled.performTlsHandshake(ExportControlled.java:206)
at com.mysql.cj.protocol.StandardSocketFactory.performTlsHandshake(StandardSocketFactory.java:183)
at com.mysql.cj.protocol.a.NativeSocketConnection.performTlsHandshake(NativeSocketConnection.java:91)
at com.mysql.cj.protocol.a.NativeProtocol.negotiateSSLConnection(NativeProtocol.java:358)
Я пробовал, возможные причины/решения указаны здесь
Но ни одно из решений мне не помогло. Может ли кто-нибудь помочь мне решить эту проблему?

Подробнее здесь: https://stackoverflow.com/questions/790 ... 7-over-ssl
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»