服务器安装的是OpenJDK8 ,使用RestTemplate发送https请求时报错,但是自己电脑本地却成功运行
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.web.client.ResourceAccessException: I/O error on GET request for "https://oapi.dingtalk.com/gettoken": java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty; nested exception is javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty] with root cause
java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
因为OpenJDK8的认证证书小一些只有32k,可能证书不完全,本地证书109k,这时替换证书就行了 本地电脑上的jdk是OracleJDK8,直接把本地 jdk1.8.0_291\jre\lib\security\cacerts 替换服务器的 cacerts 即可
顺便说一句,这会发生在例如从 OracleJDK8 切换到 OpenJDK8 时,因为 OpenJDK 带有一个空的信任存储。从 OpenJDK11 复制一个修复了问题 —— light_303 2018 年 11 月 13 日 9:38 相关 stackoverflow ,stackoverflow
|