macOS上安装的Apple开发者证书过期后,运行一工具,提示:code signature invalid。MH_EXECUTE、LC_LOAD_DYLIB等类型二进制文件必须签名才能使用,此时需要重签。重签名操作涉及两个命令行工具:codesign和security。以动态库名称为libKanchuan.dylib说明操作步骤:
security
security是macOS系统访问keychain和安全组件的命令行工具,钥匙串访问(Keychain Access)App实际上就是调用的security命令。通过man security
查看security的具体用法。在本例中我们需要列出本机上可用的证书。
security find-identity -v -p codesigning
1) HOUD0W9JZ7TZ9KLUXI18Y69U37GAH6GXJFVK21XF "Apple Development: Kanchuan (C7LAUUEPVY)"
1 valid identities found
//-p:指定用途查找;
//-v:仅显示可用的;
codesign
macOS的签名工具。部分可用参数:
-s:签名;
-f:强制操作,将替换掉原有签名;
-d:显示签名信息;
-v:verbose,v越多信息越多;
-i:修改bundle id;
…
查看签名信息
codesign -d -vv libKanchuan.dylib
libKanchuan.dylib: CSSMERR_TP_CERT_REVOKED
In architecture: x86_64
提示证书已经是撤销状态,需要重新签名。
重新签名
codesign -f -s 'Apple Development: Kanchuan (C7LAUUEPVY)' libKanchuan.dylib
//或
codesign -f -s 'HOUD0W9JZ7TZ9KLUXI18Y69U37GAH6GXJFVK21XF' libKanchuan.dylib
odesign -vv libKanchuan.dylib
libKanchuan.dylib: valid on disk
libKanchuan.dylib: satisfies its Designated Requirement
重签名之后,libKanchuan.dylib即可重新使用。
留言板