Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
导入证书后出现Java Keytool错误;keytool错误:java.io.FileNotFoundException&;“拒绝访问”;_Java_Ssl_Ssl Certificate_Keytool - Fatal编程技术网

导入证书后出现Java Keytool错误;keytool错误:java.io.FileNotFoundException&;“拒绝访问”;

导入证书后出现Java Keytool错误;keytool错误:java.io.FileNotFoundException&;“拒绝访问”;,java,ssl,ssl-certificate,keytool,Java,Ssl,Ssl Certificate,Keytool,我正在尝试通过HTTPS连接JavaWebAPI;但是,会引发异常: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException 我遵循了从在线密钥工具和SSL证书教程中学到的以下步骤: 我将HTTPS URL复制到浏览器中,下载SSL证书并使用Internet Explorer将其安装到浏览器中 将证书导出到我的计算机上的路径,证书保存为.cer 使用了keytool的导入选项。下面的命令执行时

我正在尝试通过HTTPS连接JavaWebAPI;但是,会引发异常:

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>
    

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

    检查密钥库上的写入权限。

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

    如果您使用的是windows 8:

  • 单击开始按钮
  • 在搜索框中,键入
    命令提示符
  • 从结果中,右键单击
    命令提示符
    ,然后单击
    以管理员身份运行
    。然后执行keytool命令

  • 您可以授予自己解决此问题的权限

    右键单击cacerts>选择属性>选择安全选项卡>允许对所有组和用户名拥有所有权限


    这对我很有用。

    您可以存储其他磁盘或路径(不是C)例如:D\


    我甚至以管理员身份运行命令提示符,但由于以下错误,它对我无效

    'keytool' is not recognized as an internal or external command,
     operable program or batch file.
    
    如果keytool的路径不在系统路径中,则需要使用完整路径来使用keytool,即

    C:\Program Files\Java\jre<version>\bin
    
    C:\ProgramFiles\Java\jre\bin
    
    因此,命令应该是

    "C:\Program Files\Java\jre<version>\bin\keytool.exe" -importcert -alias certificateFileAlias -file CertificateFileName.cer -keystore cacerts
    
    “C:\Program Files\Java\jre\bin\keytool.exe”-导入-别名certificateFileAlias-文件CertificateFileName.cer-密钥库cacerts
    

    这对我很有用。

    对于Mac用户,请确保sudo,并在出现提示时首先提供管理员密码,然后是密钥库密码,除非您实际更改了密码,否则该密码通常应为“changeit”。

    已解决。

  • 只需以管理员身份运行CMD
  • 确保您使用了正确的信任库密码

  • 在本地密钥库中导入证书时,我遇到了同样的问题

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

    下面的解决方案对我有用

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

    2) 将当前目录更改为%JAVA\u HOME%\jre\lib\security

    3) 然后发出下面的命令

    keytool-import-alias“mycertificatedemo”-文件“C:\Users\name\Downloads\abc.crt”-密钥库cacerts

    3) 给密码换一下

    4) 输入y

    5) 您将在successful上看到以下消息 “证书已添加到密钥库”

    确保只在-keystore参数中提供“cacerts”,因为我提供了完整的路径,如“C**:\Program Files\Java\jdk1.8.0151\jre\lib\security**”


    希望这能起作用

    即使我以管理员身份运行cmd,我也会遇到这个错误

    根本原因是:该文件来自VCS(subversion、perforce等),当我检查该文件的属性时,它的属性是只读的

    因此,解决方案是:

    • (1) 禁用“只读”属性
    • (2) 从VCS签出,让文件处于读写状态

    能否发布您执行的确切的
    keytool
    命令及其输出?这里的一些明显问题是
    -keystore
    参数的输入错误,以及keytool无法找到将密钥导入的密钥库这一事实,我的意思是写:keytool-import-alias downloadedCertAlias-keystore C:\path\to\my\keystore\cacerts.file-file C:\path\of\exportedCert.cer我还提到了执行的命令没有出现错误,所以很明显这只是我问题中的拼写错误!!!感谢Mac用户,一个简单的sudo可以解决这个问题。以管理员身份运行不是正确的解决方法警告。大多数公司都在锁定管理员访问。最好修复访问被拒绝的原因,而不是提升previlages。键入cmd并点击Ctrl+Shift+enter并成功添加证书-这对meThanks有效。control Shift cmd是我更改cacerts store的唯一方法。说真的,我一直收到这个错误,而且它是错误的一台公司的笔记本电脑,我根本不可能以管理员身份运行任何东西。这里的大多数答案都依赖于以管理员身份运行,这一事实令人沮丧。如果有人可以在此基础上进行扩展,只检查权限不会改变任何内容。将tomcat目录设置为只读将导致此异常如何检查weite permission?如本文所述,实际上位于安全目录中,只提供证书的“cacerts”名称,而不是完整路径w
    C:\Program Files\Java\jre<version>\bin
    
    "C:\Program Files\Java\jre<version>\bin\keytool.exe" -importcert -alias certificateFileAlias -file CertificateFileName.cer -keystore cacerts