如何在keystore文件中检查证书名称和别名?

我有一堆.keystore文件,需要找到一个具有特定CN和别名的文件。有办法做到这一点与keytool, jarsigner或其他工具?我找到了一种方法来检查特定的密钥存储库是否用于对特定的apk进行签名,但是我还需要获得每个文件中的别名和证书名称。

1178975 次浏览

您可以运行以下命令来列出您的密钥存储库文件的内容(以及别名):

keytool -v -list -keystore .keystore

如果你正在寻找一个特定的别名,你也可以在命令中指定它:

keytool -list -keystore .keystore -alias foo

如果没有找到别名,它将显示一个异常:

keytool错误:java.lang.Exception: Alias不存在

您可以从Java代码运行。

try {


File file = new File(keystore location);
InputStream is = new FileInputStream(file);
KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
String password = "password";
keystore.load(is, password.toCharArray());




Enumeration<String> enumeration = keystore.aliases();
while(enumeration.hasMoreElements()) {
String alias = enumeration.nextElement();
System.out.println("alias name: " + alias);
Certificate certificate = keystore.getCertificate(alias);
System.out.println(certificate.toString());


}


} catch (java.security.cert.CertificateException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (KeyStoreException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
if(null != is)
try {
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

证书类保存有关密钥存储库的所有信息。

更新—获取私钥

Key key = keyStore.getKey(alias, password.toCharArray());
String encodedKey = new Base64Encoder().encode(key.getEncoded());
System.out.println("key ? " + encodedKey);

@prateek希望这就是你想要的!

密钥存储库浏览器开源可视化工具来管理密钥库。

为了得到所有的细节,我不得不在romaintaz的答案中添加-v选项:

keytool -v -list -keystore <FileName>.keystore

在类似bash的环境中,您可以使用:

keytool -list -v -keystore cacerts.jks | grep 'Alias name:' | grep -i foo

该命令由三部分组成。如上所述,1日部分将列出包含所有详细信息的所有受信任证书,这就是为什么2日部分只过滤这些详细信息中的别名信息。最后,在3日部分,你可以搜索一个特定的别名(或它的一部分)。-我打开大小写不敏感模式。因此,给定的命令将产生包含'foo'、f.e. foo、123_FOO、fooBar等模式的所有别名。更多信息man grep

这将列出所有证书:

keytool -list -keystore "$JAVA_HOME/jre/lib/security/cacerts"

也有控制台证书管理器编写为单文件shell脚本(开源):

< a href = " https://dev。到/sfkulyk/writing-面板-manager-for-certificate-keystore-in-linux-shell-187b" rel="nofollow noreferrer">https://dev.to/sfkulyk/writing-panel-manager-for-certificate-keystore-in-linux-shell-187b . sh > . sh

可以浏览,复制,删除,重命名和比较密钥库。

在Windows上:

Keytool -v -list -keystore my_keystore | findstr my_string .使用实例

参考:

CMD搜索目录查找文件中的字符串

如果你得到警告

# EYZ0

然后可以使用该命令

# EYZ0

cmd:

keytool -list -keystore 'keystoreName'

然后按'Enter' 然后CMD将提示您输入密钥库密码

cmd在输入时不显示密码 所以只要输入正确的密码-小心-然后再按enter键

你可以使用:

keytool -list -keystore 'keystoreName' -storepass 'type your keystore passwd'

对于Keys的完整信息,只需添加-v:

keytool -v -list -keystore 'keystoreName' -storepass 'type your keystore passwd'

Keytool -v -list -cacerts -alias cert1 .使用实例

这适用于我,当我检查证书添加到jdk-11的别名,并检查它是否添加在windows机器上

我们可以使用简单的命令从Certs获取证书列表,并在结果输出中搜索您的别名。

keytool -list -keystore C:/swdtools/jdk1.7.0_67/jre/lib/security/cacerts