我正在尝试通过 HTTPS 连接 Java Web API;但是,抛出异常:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException
我按照从在线密钥工具和 SSL 证书教程中学到的这些步骤进行操作:
我将 HTTPS URL 复制到浏览器中,下载 SSL 证书并使用 Internet Explorer 在浏览器中安装它们。
将证书导出到我计算机上的路径,证书保存为
.cer
使用 keytool 的导入选项。下面的命令执行没有任何错误。
keytool -import -alias downloadedCertAlias -keystore C:\path\to\my\keystore\cacerts.file -file C:\path\of\exportedCert.cer
在命令提示符处提示我输入密码,我输入了密码然后通过了身份验证。
cmd
窗口打印了一些证书数据和签名,系统提示我以下问题:
信任这个证书?
我回答是。
- 显示的 cmd 提示符
证书已添加到密钥库
但是在该消息之后,显示了另一个异常:
keytool error: java.io.FileNotFoundException: C:\Program files\...\cacerts <Access Denied>
最后,当我检查 keystore 时,未添加 SSL 证书,我的应用程序给出了与之前尝试连接时相同的异常:
(javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException)
原文由 cyber101 发布,翻译遵循 CC BY-SA 4.0 许可协议
在本地密钥库中导入证书时,我遇到了同样的问题。每当我发出 keytool 命令时,我都会收到以下错误。
证书已添加到密钥库 keytool 错误:java.io.FileNotFoundException: C:\Program Files\Java\jdk1.8.0_151\jre\lib\security(访问被拒绝)
以下解决方案对我有用。
确保您以管理员模式在 Rus 中运行命令提示符
将当前目录更改为 %JAVA_HOME%\jre\lib\security
3)然后发出以下命令
keytool -import -alias “mycertificatedemo” -file “C:\Users\name\Downloads\abc.crt” -keystore cacerts
3)给密码changeit
4)输入y
确保你只在 -keystore param value 中给出“ cacerts ”,因为我给出了像“C**:\Program Files\Java\jdk1.8.0_151\jre\lib\security**”这样的完整路径。
希望这会奏效