枚举 Mac Keychain 中的所有证书并比较创建/到期日期

ray*_*ray 6 macos keychain code-signing-certificate

我正在尝试编写一个脚本,该脚本将列出钥匙串中所有已安装的证书,并将它们与来自 Apple 开发门户的证书的创建/到期日期进行比较。

我已经查看了security( https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/security.1.html ) 和的文档openssl,但我似乎无法通过证书从一个到另一个。

另一种方法是Security.framework直接使用,但我没有看到任何明显的方法来转储证书的创建/到期日期。

任何指导?

小智 8

在命令行中,我认为您可以这样做security find-certificate -a -p,然后将返回的 PEM 编码证书拆分以将它们提供给openssl x509 -inform PEM ....,然后将返回的 PEM 编码证书分开,将它们一一

SecItemCopyMatching在代码中,您可以使用kSecClass=kSecClassCertificatekSecMatchLimit=枚举证书kSecMatchLimitAll。您也许能够使用 获取证书的到期日期SecCertificateCopyValues(),但如果不能,您可以使用 获取证书本身(作为 DER 编码的 blob)SecCertificateCopyData()并将其通过管道传输到openssl x509 -inform DER ....