如何获取login钥匙串中codesigning证书的过期日期
提取login钥匙串代码签名证书有效期方案
直接可用批量查询脚本
直接在终端执行以下命令即可输出所有codesigning证书的名称、SHA1和过期时间:
security find-identity -p codesigning login.keychain | grep "^\s*[0-9]*\)" | awk '{print $2}' | while read -r sha1; do cert_info=$(security find-certificate -Z -c "$sha1" -p login.keychain | openssl x509 -noout -dates -subject) cert_name=$(echo "$cert_info" | grep 'subject=' | sed 's/.*CN=\([^/]*\).*/\1/') expire_date=$(echo "$cert_info" | grep 'notAfter=' | sed 's/notAfter=//') echo "证书名称: $cert_name | 过期时间: $expire_date | SHA1: $sha1" done
命令逻辑说明
- 第一部分先从
security find-identity的输出中过滤有效签名条目,提取每个条目的唯一SHA1哈希值作为查询索引 - 循环过程中调用
security find-certificate读取对应证书的PEM内容,交给openssl解析证书字段 - 从解析结果中提取证书公用名(CN字段)和过期时间(notAfter字段)输出
单证书查询方法
如果仅需要查询单个证书的有效期,执行以下命令替换对应参数即可:security find-certificate -c "<证书名称或SHA1>" -p | openssl x509 -noout -enddate
注意事项
如需查询系统钥匙串内的证书,将命令中
login.keychain替换为/Library/Keychains/System.keychain即可;如果执行过程中弹出权限验证,输入当前用户密码即可完成读取。
内容的提问来源于stack exchange,提问作者catu
相关产品推荐
相关产品推荐

