导入证书后出现 Java Keytool 错误,“keytool error: java.io.FileNotFoundException & Access Denied”

新手上路,请多包涵

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

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

我按照从在线密钥工具和 SSL 证书教程中学到的这些步骤进行操作:

  1. 我将 HTTPS URL 复制到浏览器中,下载 SSL 证书并使用 Internet Explorer 在浏览器中安装它们。

  2. 将证书导出到我计算机上的路径,证书保存为 .cer

  3. 使用 keytool 的导入选项。下面的命令执行没有任何错误。

    keytool -import -alias downloadedCertAlias -keystore C:\path\to\my\keystore\cacerts.file -file C:\path\of\exportedCert.cer

  1. 在命令提示符处提示我输入密码,我输入了密码然后通过了身份验证。

  2. cmd 窗口打印了一些证书数据和签名,系统提示我以下问题:

信任这个证书?

我回答是。

  1. 显示的 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 许可协议

阅读 2.2k
2 个回答

在本地密钥库中导入证书时,我遇到了同样的问题。每当我发出 keytool 命令时,我都会收到以下错误。

证书已添加到密钥库 keytool 错误:java.io.FileNotFoundException: C:\Program Files\Java\jdk1.8.0_151\jre\lib\security(访问被拒绝)

以下解决方案对我有用。

  1. 确保您以管理员模式在 Rus 中运行命令提示符

  2. 将当前目录更改为 %JAVA_HOME%\jre\lib\security

3)然后发出以下命令

keytool -import -alias “mycertificatedemo” -file “C:\Users\name\Downloads\abc.crt” -keystore cacerts

3)给密码changeit

4)输入y

  1. 您将在成功“证书已添加到密钥库”时看到以下消息

确保你只在 -keystore param value 中给出“ cacerts ”,因为我给出了像“C**:\Program Files\Java\jdk1.8.0_151\jre\lib\security**”这样的完整路径。

希望这会奏效

原文由 Waqas Ahmed 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

原文由 Sharan Rajendran 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题