关键工具错误: java.lang.Exception: 别名不存在。

21

我已经通过以下命令成功导入了证书:

keytool -import -alias "alias-name" -file 
  "C:\somepath\Certificate\portal.cer 
  -keystore C:\Program Files\Java\jdk1.7.0_79\jre\lib\cacerts"

现在我正在尝试使用以下方式删除导入的证书

keytool -delete -alias "alias-name" -keystore 
     "C:\Program Files\Java\jdk1.7.0_79\jre\lib\cacerts" -storepass changeit

但是我最终遇到了以下错误信息:

KeyTool 错误: java.lang.Exception : 别名不存在


1
在第一个命令中缺少两个引号(在 .cer 之后和 keystore 路径之前)。 - Omikron
3个回答

14

对于Ubuntu/Linux
列出所有带有相应别名的密钥库条目

keytool -list -v -keystore "myKeyStore.jks" -storepass myPassword

使用冗长选项'-v'很重要,可以看到别名。

示例输出:

Keystore type: PKCS12
Keystore provider: SUN

Your keystore contains 2 entries

Alias name: 1
Creation date: Dec 4, 2019
Entry type: PrivateKeyEntry
Certificate chain length: 2
Certificate[1]:
Owner: CN=yourname.com, O=Your Name, C=XX
Issuer: CN=Issuer CA, O=Issuer Name, C=XX
Serial number: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Valid from: Mon Feb 25 10:04:56 GMT 2019 until: Wed Feb 24 10:04:56 GMT 2021
Certificate fingerprints:
   SHA1: 9F:35:31:B1:A9:C2:37:8D:61:2F:9B:ED:82:3F:45:26:E1:D9:18:83
   SHA256: 34:65:C8:B6:4D:24:9D:20:3C:24:7B:B7:7B:F5:6B:F3:BE:79:11:BE:4F:8C:21:D2:9E:86:CC:AD:17:84:01:C4                                                        
Signature algorithm name: SHA256withRSA
Subject Public Key Algorithm: 2048-bit RSA key
Version: 3
Extensions:  
...                                    

11
检查别名是否存在。您可以使用以下命令列出所有条目:
keytool -list -keystore "C:\Program Files\Java\jdk1.7.0_79\jre\lib\cacerts" -storepass changeit

这个命令将显示文件中所有现有的别名。如果它不存在,那就是为什么你无法删除它。


3
有时候,即使密钥库中存在别名,您也可能会遇到此错误。这可能是因为在传递参数时未正确给出别名。
例如:letsencryptisrgx1 [jdk]
在上述别名中,您可以看到方括号,这是我遇到的问题。
当我用双引号给出整个名称时,它就可以工作了。
 $JAVA_HOME/bin/keytool -list -v -alias "letsencryptisrgx1 [jdk]" -keystore $JAVA_HOME/lib/security/cacerts

谢谢。关于“[jdk]”,让我觉得那不是名称的一部分。 - ScottD

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接