场景
- 在进行
macOS
开发时, 一般都需要对app
进行签名,而我们发布产品后,测试如何查看app
是否已经签名,证书是否正确,证书的有效期到哪天?我们右键app
的Get Info
并没有签名和证书信息。
说明
- 判断一个
app
是否签名可以通过codesign
命令进行获取; 会输出签名的app
信息,没有证书有效期和证书名称。
codesign -dvvv /Applications/iTunes.app
输出
Executable=/Applications/iTunes.app/Contents/MacOS/iTunes
Identifier=com.apple.iTunes
Format=bundle with Mach-O thin (x86_64)
CodeDirectory v=20200 size=144720 flags=0x2000(library-validation) hashes=7227+5 location=embedded
Hash type=sha1 size=20
CDHash=590903fd37dbc8c4bb2d9bd6bbe633057ca56e65
Signature size=4105
Authority=Software Signing
Authority=Apple Code Signing Certification Authority
Authority=Apple Root CA
Info.plist entries=38
TeamIdentifier=243LU875E5
Sealed Resources version=2 rules=13 files=7276
Internal requirements count=1 size=64
sign.sh
- 获取一个
app
的签名证书,可以通过几条命令组合.以下内容另存位sign.sh
之后通过命令行运行。
echo 使用说明: sh sign.sh App的绝对路径 如:/System/Applications/Mail.app
if [ -n "$1" ]; then
echo "[$1]"
mkdir test-1
cd test-1
codesign --display --extract-certificates "$1"
qlmanage -c public.x509-certificate -p codesign*
cd ..
rm -fr test-1
else
echo "请输入App的绝对路径!!!"
fi
运行成功后会弹出一个截图: