发送者先对要发送的"数据"计算一个哈希值, 再用自己的私钥对这个哈希值加密生成一 个"签名(值)", 同时发送者要拥有一个向CA申请得到的"数字证书"(记住, 其记录有公 钥), 最后发送者把"数据", "签名(值)"和"数字证书"一起发送给接收者.
验证签名:
接收者接收到发来的"数据", "签名(值)"和"数字证书"后, 会作一系列验证来判断这一数 字签名是否有效:
打开并验证"数字证书"的有效性;
计算"数据"的哈希值H1, 用"数字证书"记录的公钥对"签名(值)"进行解密得到值H2, 如 果H1==H2, 则该"数字签名"有效.
Xcode代码签名相关 KeychainMAC下用于存储和管理密钥等私密信息的工具.
Identifiers / Bundle ID / App ID这是应用的唯一标识.
Device UUID这是设备的唯一标识.
Provisioning Profiles这就是我们最后要生成的 Profiles, 它记录了 App ID, UUID 和其所信任的证书.
当Xcode要把一个应用部署到真机上时, 会作相应检验:
Keychain中是否有相匹配的有效证书? 参考\'如何验证数字证书的有效性?\'
Profiles是否有效? 参考\'数字签名原理\'
要部署的App的App ID是否与Profiles记录的App ID相匹配?
UUID是否相匹配?
只有在所有检验都通过了, 才能部署到真机上.
Start 生成密钥填上Email和Name, 并选择"Saved to disk".
最后在"keys"下生成一对新的密钥, 为了以后分辨方便, 最好对它重新命名, 双击可以重 命名. 同时也会生成一个CRS文件.
安装根证书这个证书叫做 Worldwide Developer Relations Certificate Authority, 通过这个链接 可以下载: https://developer.apple.com/certificationauthority/AppleWWDRCA.cer, 一般下载下来的文件名为: AppleWWDRCA.cer.
该证书一般由 Xcode 自动安装.
向Apple(CA)申请开发者证书登陆苹果开发者中心, 到 Certificates, Identifiers & Profiles | iOS Apps | Certificates | Development 下, 新增一个Certificates:
点下一步会出现, 要求你先生成一个CRS文件, 这就是我们在"生成密钥"时做的:
直接下一步, 并把刚才生成的CRS文件上传, 最后提交生成证书. 把它下载下来, 双击, 其会自动添加到Keychains中.
创建 App ID在Identifiers下创建一个新的App ID.
把设置的UUID加入Devices注册列表在Devices下添加.
生成Profiles在 Certificates, Identifiers & Profiles | iOS Apps | Provisioning Profiles | Development 下, 点击添加一个新的Profiles.
到"选择证书"页面时, 有一点要注意, 最好只选上刚刚生成的证书, 不要选择所有. 因为 "选择所有"在Keychain中已有别的证书下, 容易出现各种奇葩问题, 后面会有详细说明.
最后, 把它下载下来, 双击添加到Xcode中.
配置到Xcode至此, 一切OK!
可能遇到的错如果你按上面的执行下来, 最后一编译应用发现还是不行, 报类似这种错,
在XcodeOrganizer中也会显示出错:
这错一般是由于证书不匹配, 要检查:
保证生成Profile时, 选择且只选择了一个证书;
保证Keyschain里没有重复的证书.