我需要从命令行检索存储在 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\...
是什么意思。我尝试过其他字符代码,但它们只是给我乱码。
就格式而言,证书以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手册页。