我正在尝试通过 HTTPS 连接 Java Web API;但是,抛出异常:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException
我遵循了从在线 keytool 和 SSL 证书教程中学到的这些步骤:
我将 HTTPS URL 复制到浏览器中,下载 SSL 证书并使用 Internet Explorer 在浏览器中安装它们。
将证书导出到我的计算机上的路径,证书保存为.cer
.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)
如果您没有在管理员模式下运行命令提示符,则可能会发生这种情况。如果您使用的是 Windows 7,则可以运行,输入 cmd 并按 Ctrl+Shift+enter。这将以管理员模式打开命令提示符。如果没有,您也可以转到开始 -> 所有程序 -> 附件 -> 右键单击命令提示符,然后单击“以管理员身份运行”。