JDK导入安全证书失败异常问题解决 您所在的位置:网站首页 java安装证书 JDK导入安全证书失败异常问题解决

JDK导入安全证书失败异常问题解决

2024-07-13 16:28| 来源: 网络整理| 查看: 265

    今天项目启动遇到了证书异常问题,网上搜了安全证书的导入方式,还是出现一些比较少见的异常,下面记录下来且给出了解决方 案,希望可以给后续遇到相同问题的同学 提供解决思路。

      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 实验室设备网 版权所有