IOS代码签名证书是如何进行数字签名的
IOS系统的APP是苹果旗下的,如果要使用,都是需要从app store下载的。手机是如何确保从app store下载的app是没被恶意篡改,以及如何验证app开发者身份的呢?这个就需要用到IOS代码签名证书了。
数字签名可以确保数据没有被篡改,但仍有一个问题。任何人都能申请一对公私钥,那如何知道解密的公钥就是某个用户的呢?这时就要用户向一个证书认证机构(Certification Authority,简称CA)申请一个代码签名证书,将用户的信息和用户的公钥,以及该CA的信息绑定在一起。将这些信息用CA的私钥进行数字签名,该数字签名和用户信息、用户公钥、CA信息组成了数字证书。
IOS代码签名证书是如何进行数字签名的?
xcode在为app签名时,并不是一次将整个安装包进行签名的。而是将每个文件独自签名,采用的规则如下:
1)Mach-O可执行文件:独自签名后,将签名数据写入到该可执行文件中。
2)资源文件:将所有资源文件,比如图片,plist文件等独自签名,并且将签名信息记录在_CodeSignature/CodeResources文件中。
开发者只需要在xcode设置有效的开发者证书(包含私钥),在编译过程中,自动会将代码签名。我们也可以使用codesign命令签名,或者查看签名信息。
开发者只需要在xcode设置有效的开发者证书(包含私钥),在编译过程中,自动会将代码签名。我们也可以使用codesign命令签名,或者查看签名信息。
3)查看系统中可以用来对代码进行签名的证书
$ security find-identity -v -p codesigning
6F58B7E08291BFFEB94746AE4416331679BB3ED3 “iPhone Developer: 1666522608@qq.com (DY6MN4A4Y8)”
4)为app设置签名
$ codesign -s ‘iPhone Developer: 1666522608@qq.com (DY6MN4A4Y8)’ Example.app
5)删除已存在的签名,重新为app设置签名,加上-f参数
$ codesign -f -s ‘iPhone Developer: 1666522608@qq.com (DY6MN4A4Y8)’ Example.app
6)查看签名信息
$ codesign -vv -d Example.app
Executable=/Users/apple/Library/Developer/Xcode/DerivedData/Example-IOSegobnxqrpyiplcezotfhlhohfykp/Build/Products/Debug-iphoneos/Example.app/v2ex
Identifier=singro.v2ex.qh
Format=app bundle with Mach-O universal (armv7 arm64)
CodeDirectory v=20400 size=35314 flags=0x0(none) hashes=1095+5 location=embedded
Signature size=4800
Authority=iPhone Developer: 1666522608@qq.com (DY6MN4A4Y8)
Authority=Apple Worldwide Developer Relations Certification Authority
Authority=Apple Root CA
Signed Time=2018年10月30日 17:26:44
Info.plist entries=35
TeamIdentifier=J5FZC7U82Y
Sealed Resources version=2 rules=13 files=44
Internal requirements count=1 size=180
以上就是IOS代码签名证书进行签名的详细过程,希望能帮助到大家。