我有一堆.keystore文件,需要找到一个具有特定CN和别名的文件。有办法做到这一点与keytool, jarsigner或其他工具?我找到了一种方法来检查特定的密钥存储库是否用于对特定的apk进行签名,但是我还需要获得每个文件中的别名和证书名称。
当前回答
在类似bash的环境中,您可以使用:
keytool -list -v -keystore cacerts.jks | grep 'Alias name:' | grep -i foo
该命令由三部分组成。如上所述,第一部分将列出所有受信任的证书和所有详细信息,这就是为什么第二部分只过滤这些详细信息中的别名信息。最后在第三部分,你可以搜索一个特定的别名(或它的一部分)。-i打开不区分大小写模式。因此,给定的命令将产生包含'foo'、f.e. foo、123_FOO、fooBar等模式的所有别名。获取更多信息man grep。
其他回答
也有控制台证书管理器编写为单文件shell脚本(开源):
https://dev.to/sfkulyk/writing-panel-manager-for-certificate-keystore-in-linux-shell-187b
可以浏览,复制,删除,重命名和比较密钥库。
这将列出所有证书:
keytool -list -keystore "$JAVA_HOME/jre/lib/security/cacerts"
在Windows上:
Keytool -v -list -keystore my_keystore | findstr my_string
参考:
CMD搜索目录以查找文件中的字符串
为了得到所有的细节,我不得不在romaintaz的答案中添加-v选项:
keytool -v -list -keystore <FileName>.keystore
您可以运行以下命令来列出您的密钥存储库文件的内容(以及别名):
keytool -v -list -keystore .keystore
如果你正在寻找一个特定的别名,你也可以在命令中指定它:
keytool -list -keystore .keystore -alias foo
如果没有找到别名,它将显示一个异常:
keytool错误:java.lang.Exception: Alias不存在
推荐文章
- 在maven中安装mvn到底做什么
- 在android中从上下文获取活动
- 不可变与不可修改的集合
- 如何在JSON中使用杰克逊更改字段名
- GSON -日期格式
- 如何从线程捕获异常
- 无法解析主机"<URL here>"没有与主机名关联的地址
- getActivity()在Fragment函数中返回null
- 如何在Java中打印二叉树图?
- 按钮背景是透明的
- String.format()在Java中格式化双重格式
- 在Mac OS X上哪里安装Android SDK ?
- 我如何获得图像缩放功能?
- 在Android应用程序中显示当前时间和日期
- com.jcraft.jsch.JSchException: UnknownHostKey