当前位置: 首页 > 知识库问答 >
问题:

为什么在最新的JDK更新后Java不能连接到MySQL5.7?应该如何修复?(SSL.SSLHandShakeException:没有适当的协议)

唐骏祥
2023-03-14

在2021年4月对JDK的最新更新(11.0.11+9-0Ubuntu2~18.04)中,删除了对TLSv1TLSv1.1的支持,可能是因为自2021年3月以来不再支持这些版本。java.security文件中的差异可以明显看出这一点:

之前:

jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, DH keySize < 1024, \
    EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \
    include jdk.disabled.namedCurves

之后:

jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \
    DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \
    include jdk.disabled.namedCurves
java.sql.SQLException: An attempt by a client to checkout a Connection has timed out.
ERROR [2021-04-29 16:21:16,426] com.zaxxer.hikari.pool.HikariPool: HikariPool-1 - Exception during pool initialization.
! javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)

共有1个答案

云利
2023-03-14

正如@skelwa已经评论的那样,您需要在连接字符串中添加enabledtlsprotocols=tlsv1.2配置属性来解决问题。完整的连接字符串可能如下所示:

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

剩下的问题是:

为什么JDK和MySQL不同意使用TLSV1.2呢?

...(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)
    ...
 类似资料:
  • 我想安装Primeng7.0.0到我的Angular项目,但首先我需要更新我的JHipster到最后一个版本。 当我将此命令写入terminal时,我得到以下错误

  • 我正在尝试将JDK位置从“C:\Program Files\Java\JDK1.7.0_09”更改为“C:\Program Files\Java\JDK1.8.0_25”,但Android Studio似乎完全忽略了这个更改。位置仍然是“C:\ProgramFiles\java\jdk1.7.0_09”。 有谁能提供一个如何补救的小窍门吗?

  • 是我在复制时做错了什么,还是有办法不缓存特定的步骤?

  • 我尝试将我的SSL证书添加到JVM的密钥存储库中,我甚至尝试用这段代码接受每一个证书(这违背了我所知道的SSL的目的 我被难住了,任何帮助都将非常感谢!

  • 问题是: 主线程中通过 setText 更新了 TextView,但是视图没有更新这是为什么?而且仅在app运行一段时间后开始不更新,一开始运行的时候都能正常更新。 详情如下: 用的 BottomNavigationView 包做的地步导航菜单 当 ws 接收到刷新未读消息数量的时候会用 EventBus 推送一条更新数量的消息 在具体的页面中做了 eventbus 的监听,也能正常收到 even

  • 我有两个表,分别名为tblOefenen(带有主键)和tblOefenen2(带有外键)。我已经删除了前面的外键,因为我想添加‘更新级联’到外键。 那么做了什么:1。我已经移除了TbloeFenen2的约束(外键)。2.我已经将新的外键添加到列ID中,我的主键在列ID上,也在表tbloefenen中: 有人能帮我一下吗?