如何解析Mac中security命令输出的证书信息?

问题描述 投票:0回答:1

我需要从命令行检索存储在 Mac 钥匙串中的证书的属性。我可以从钥匙串访问应用程序手动收集它们,但我想使用脚本来完成此操作。

我使用

security
命令获取证书并使用“grep”检查“主题”部分:

security find-certificate -c "Apple Development" login.keychain | grep "subj"

然后得到以下输出(有些被“...”省略)。

"subj"<blob>=0x3081943...553  "0\201\2241\0320\03...02US"

在上面的输出中,

"subj"<blob>=
后面的数据是什么格式以及如何解析它?我发现用 UTF-8 解码十六进制序列的前半部分(0x30...)会产生字符串的后半部分(0�...),但我不知道
0\201\2241\...
是什么意思。我尝试过其他字符代码,但它们只是给我乱码。

macos terminal keychain
1个回答
1
投票

就格式而言,证书以DER/PEM格式存储,这是ASN.1编码数据的表示。您在输出中看到的是 ASN.1 二进制数据的十六进制表示形式。 blob 表示值或属性存储为二进制数据。

对于导出(用于证书),我强烈建议将

security
openssl
结合使用,如下所示:

security find-certificate -p -c "Apple Development" login.keychain | openssl x509 -noout -subject

security 命令中的

-p
选项以 PEM 格式导出找到的证书,这是 openssl 可以使用的格式。然后,您可以将 PEM 数据传输到
openssl
命令,其中可以使用
-subject
选项轻松提取主题。

您可以查看安全手册页openssl x509手册页。

© www.soinside.com 2019 - 2024. All rights reserved.