将JDK 8迁移到JDK 11时,MySQL抛出SSL错误。

5
mysql连接器的版本是5.1.42,ds.properties.j2中的连接器字符串为:
ds.datasource.name=coreDS
ds.datasource.driver=com.mysql.jdbc.Driver
ds.datasource.url=jdbc:mysql://{{ core_db_host }}:{{ core_db_port }}/{{ core_db_schema }}?useSSl=true&requireSSL=true&verifyServerCertificate=false
ds.datasource.username={{ core_db_user }}
ds.datasource.password={{ core_db_password }}

收到以下错误:

> TASK [jetty : Jetty | Report errors in
> /opt/jetty/base/default/logs/error.log]
> **************************************************** ok: [localhost] => {
>     "msg": "ERRORS found in /opt/jetty/base/default/logs/error.log: 2020-07-17 11:54:44,652 ERROR [com.zaxxer.hikari.pool.HikariPool]
> (main) coreDS - Exception during pool initialization.\n2020-07-17
> 11:54:44,659 ERROR [org.springframework.web.context.ContextLoader]
> (main) Context initialization failed" } Caused by:
> javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol
> is disabled or cipher suites are inappropriate)

2
  1. 使用“-Djavax.net.debug=all”获得更多详细信息,特别是您的客户端支持哪些TLS版本。
  2. 验证您的MySQL服务器支持哪些TLS版本:https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_tls_version
  3. 配置双方以匹配常见的TLS版本。更多信息请参见:https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-using-ssl.html
- AdamBat
1个回答

1
如果您的连接真正暴露在网络上,或者您正在使用真实数据的生产环境中工作,那么当然:我们不应该通过包括选项useSSL=false来禁用SSL。
尝试更新JDBC连接字符串以包含最新的协议版本,如下所示: jdbc:mysql://<hostName>:<portNumber>/<schemaName>?enabledTLSProtocols=TLSv1.2 在JDK 11中建立DB连接时,我们必须明确提及TLS协议的类型。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接