导入证书后出现Java Keytool错误;keytool错误:java.io.FileNotFoundException&;“拒绝访问”;
我正在尝试通过HTTPS连接JavaWebAPI;但是,会引发异常:导入证书后出现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的导入选项。下面的命令执行时
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException
我遵循了从在线密钥工具和SSL证书教程中学到的以下步骤:
.cer
keytool -import -alias downloadedCertAlias -keystore C:\path\to\my\keystore\cacerts.file -file C:\path\of\exportedCert.cer
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”。已解决。
在本地密钥库中导入证书时,我遇到了同样的问题 证书已添加到密钥库 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