什么是 security? 在 macOS
系统中,security
命令是一个强大的工具,可以让你管理密钥链(Keychain
)中的敏感信息,如密码、证书、私钥等。
钥匙串管理 1. 基础操作 1 2 3 4 5 6 7 8 security list-keychains security create-keychain -p 123 MyKeychain.keychain security unlock-keychain -p 123 MyKeychain.keychain
2. 设置默认钥匙串 1 security default-keychain -s ~/Library/Keychains/login.keychain
证书管理 1. 查找证书 1 2 security find-identity -v -p codesigning
find-identity :查找钥匙串中的身份标识(证书+私钥对)
-v :详细模式,显示更多信息
-p codesigning :只查找支持代码签名策略的证书
输出示例:
1 2 3 1) 1234567890ABCDEF1234567890ABCDEF12345678 "Apple Development: your@email.com (TEAMID)" 2) ABCDEF1234567890ABCDEF1234567890ABCDEF12 "Developer ID Application: Company Name (TEAMID)" 2 valid identities found
查看证书详细信息 1 security find-certificate -c "Apple Development" -a -Z
-c "Apple Development"
:按证书名称过滤(支持模糊匹配)
-a
:搜索所有钥匙串(包括系统和登录钥匙串)
-Z
:显示证书的 SHA-1
哈希值
2. 导入/导出证书 1 2 security import cert.p12 -k ~/Library/Keychains/login.keychain -T /usr/bin/codesign
导出证书为 PEM 格式 1 security export -k login.keychain -t certs -f pemseq -o certs.pem
提示 :-T /usr/bin/codesign
表示允许 codesign
访问此证书。
高级导出选项: 1 2 3 4 5 6 7 security export -k login.keychain -t identities \ -f pkcs12 -P "strongPassword" -o full.p12 security export -k login.keychain -c "Developer ID" \ -f pem -o single-cert.pem
密码管理 1. 存储密码 1 2 3 4 5 security add-generic-password \ -a "admin" \ -s "MySQL_Prod" \ -w "s3cret" \ -T /usr/bin/codesign
2. 读取密码(用于脚本自动化) 1 security find-generic-password -s "MySQL_Prod" -w
高级场景 1. 修复钥匙串权限 1 security set-key-partition-list -S "apple-tool:,apple:" -s -k "password" login.keychain
2. 解析 iOS 描述文件 1 security cms -D -i embedded.mobileprovision
实战示例 场景 1:CI/CD 中的自动化解锁 1 2 3 4 5 security unlock-keychain -p "$KEYCHAIN_PASSWORD " login.keychain codesign -s "Developer ID" App.app
场景 2:调试证书链 1 2 3 4 5 security verify-cert -c dev_cert.pem -k login.keychain security find-certificate -c "Apple Development" -p | openssl x509 -text
参考资源