java.security.NoSuchAlgorithmException:(算法:默认,提供者:SunJSSE,类:sun.security.ssl.SSLContextImpl$DefaultSSLContext)

2024-05-04

我从网上尝试了很多解决方案。但似乎没有一个解决方案适合我。

我们最近将 tomcat 服务器 8.0.x 升级到 8.5.x。使用 8.0.x 一切正常。但是升级后,当我们尝试从java的Spring连接到服务器时,我们遇到了这个错误restTemplate与 https。

通过 http 连接时我没有看到任何错误。

":java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: sun.security.ssl.SSLContextImpl$DefaultSSLContext);  
    nested exception is java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: sun.security.ssl.SSLContextImpl$DefaultSSLContext)

有关 tomcat 8.5.x 最近更改的一些背景信息:(@dave-thompson-085 在另一篇文章中对此进行了解释)

Java 8u60 up getInstance("JKS")(使用普通提供程序)可以读取 JKS 或 PKCS12,但“PKCS12”仅读取正在发生的 PKCS12 这里。在 9 和 10 中(我还没有尝试过 11)它可以双向工作, 但是OP的堆栈跟踪没有像9 up那样显示模块。雄猫8.5 (和 9.0)主要重写了 SSL/TLS 配置区域以处理多个 certs (SNI) 并调整之前不同的 JSSE 与 APR=OpenSSL 配置,但根据我的阅读,它仍应默认为 JKS 除非你(错误)设置了 javax.net.ssl.keyStoreType

我们如何解决这个问题:
在tomcat 8.0中默认值为javax.net.ssl.keyStoreType is JKS。我们升级到tomcat 8.5.x后,它们变成了PKCS12因为如今这已被用作行业标准。

在打破我的头一段时间后,注意到,tomcat.conf文件,VM 参数配置为使用PKCS12。我改为JKS。之后一切正常。

Changed -Djavax.net.ssl.keyStoreType=PKCS12 to -Djavax.net.ssl.keyStoreType=JKS

Tip:如果找不到 tomcat.conf 文件,请在 tomcat 目录中搜索包含“-Djavax.net.ssl.keyStoreType”字符串的文件。我看到Windows portable tomcat没有那个文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java.security.NoSuchAlgorithmException:(算法:默认,提供者:SunJSSE,类:sun.security.ssl.SSLContextImpl$DefaultSSLContext) 的相关文章

随机推荐