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代码签名证书进行签名的详细过程,希望能帮助到大家。

相关文章