javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)

        这个问题是在使用jdbc获取数据库连接池时抛出的异常,根据提示给出SSL异常,翻译为:没有合适的协议(协议被禁用或密码套件不合适)。

        然后在网上查到问题的解决办法,说是对于高的JDK版本(我用的是JDK11),对于SSL调用权限有限制,需要对JDK中的配置进行修改,可是找了好久,给出的几乎都是jdk1.8的处理,我们用的是jdk11,配置中的路径都不一样,最后通过自己胡乱一通找,终于在jdk11里找到相应的修改配置的地方了。

        修改java.security文件,jdk1.8是在jdk1.8.131/jre/lib/security/java.security路径下,而jdk11没有jre文件夹了已经,文件在jdk-11.0.20/conf/security/java.security路径下。总而言之,都要先找到security文件夹,才能找到相应文件,找到文件之后去除 jdk.tls.disabledAlgorithms 中 SSLv3, TLSv1, TLSv1.1三项协议,然后重启项目就可以啦。

        修改前:

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

        修改后:

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

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐