JDK导入安全证书失败异常问题解决 | 您所在的位置:网站首页 › java安装证书 › JDK导入安全证书失败异常问题解决 |
今天项目启动遇到了证书异常问题,网上搜了安全证书的导入方式,还是出现一些比较少见的异常,下面记录下来且给出了解决方 案,希望可以给后续遇到相同问题的同学 提供解决思路。
JDK证书的导入方式,百度随意搜索都可以找到。下面给出了一些我遇到的问题。 问题一: CMD命令行窗口,显示 'keytool' 不是内部或外部命令,也不是可运行的程序或批处理文件。 解决办法: keytool.exe文件是在JDK安装bin路径中,例如我的文件路径在:C:\Program Files\Java\jdk1.8.0_121\bin这个目录(此处根据自己安装的路径选择),如下图示: 切换cmd命令到该路径下运行,即可解决上述问题。
问题二: 按照教程安装证书时,出现下面类似的提示错误: 使用 "keytool -help" 获取所有可用命令 C:\Program Files\Java\jdk1.8.0_121\bin>keytool -import -alias ctrip -keystore %JAVA_HOME%\jre\lib\security\cacerts -file d:\Ctriproot.cer -trustcacerts 非法选项: Files\Java\jdk1.8.0_121\jre\lib\security\cacerts keytool -importcert [OPTION]... 导入证书或证书链有非法选项之类的提示的。 解决办法: 这可能是因为路径中存在空格或者文件名存在空格的情况,命令识别错误。将对应的 -keystore "%JAVA_HOME%/jre/lib/security/cacerts" 密钥库名称中路径用双引号“” 以及 %JAVA_HOME% 方式来表示。 给大家一个参考的导入命令: keytool -import -alias ctrip -file "d:\Ctriproot.cer" -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit -trustcacerts 其中 红体字 表示需要新添加的证书的路径,绿色字体表示 对应的密钥库名称所在路径。 注意: 因为我们不是在常规密钥库路径 %JAVA_HOME%\jdk1.8.0_121\jre\lib\security 下运行cmd,所以此时不能用 -keystore cacerts ,应该指定全路径 -keystore "%JAVA_HOME%/jre/lib/security/cacerts"; 即 当切换到 cacerts 文件所在的目录时,才可指定 -keystore cacerts, 否则应该指定全路径;
问题三: 排除掉上述错误后还是报错,可能是因为需要以管理员身份 运行cmd命令。例如下面报错: 或者其他的权限方面的报错。可以尝试以 管理员身份运行。 解决办法: 以 管理员身份 运行CMD 命令,具体操作步骤如下示: 左键单击开始菜单,进入开始菜单,直接键盘输入cmd。在出现的结果中找到cmd运用,右键单击--以管理员运行,如下图所示
如此,即可以 管理员身份运行命令行。 这是WIN10系统的解决办法。
最后,给出我导入安全证书的命令以及查看相应的证书的命令,大家可以参考使用哈!注意 要更改对应的红色字体 路径 为个人的路径哦。 //查看cacerts中的证书列表: keytool -list -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit
//导入指定证书到cacerts: keytool -import -alias ctrip -file "d:\Ctriproot.cer" -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit -trustcacerts
//删除cacerts中指定名称的证书: keytool -delete -alias ctrip -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit //查看cacerts中的证书列表: keytool -list -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit //导入指定证书到cacerts: keytool -import -alias ctrip -file "d:\Ctriproot.cer" -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit -trustcacerts //删除cacerts中指定名称的证书: keytool -delete -alias ctrip -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit各个选项含义: keytool:密钥和证书管理工具; -import:导入证书选项,也可以使用-importcert代替; -trustcacerts:信任来自cacerts 的证书 -alias :要处理的条目的别名 -file :输入文件名,即证书的位置 -storepass :密钥库口令 -keystore :密钥库名称 参考博文:jdk如何导入安全证书; 将安全证书导入到java的cacerts证书库
|
CopyRight 2018-2019 实验室设备网 版权所有 |