问题

我正在尝试通过HTTPS连接Java Web API;但是,会抛出异常:

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException

我遵循了从在线keytool和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>

最后,当我检查密钥库时,没有添加SSL证书,我的应用程序给出了我在尝试连接时得到的相同异常:

(javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException)

#1 热门回答(206 赞)

如果你未在管理员模式下运行命令提示符,则可能会发生这种情况。如果你使用的是Windows 7,则可以运行,键入cmd并按Ctrl Shift Enter。这将以管理员模式打开命令提示符。如果没有,你还可以开始 - >所有程序 - >附件 - >右键单击命令提示符,然后单击"以管理员身份运行"。


#2 热门回答(17 赞)

我在Windows下遇到了同样的问题,可以通过以管理员身份运行cmd.exe来解决它(右键单击开始菜单,然后"以管理员身份运行")。


#3 热门回答(9 赞)

检查密钥库的写入权限。


原文链接