名证书购买只能购买企业开发者帐号,只有企业开发者才能提供签名服务。

签名机制的意义

安全.苹果为了对App的环境有绝对的控制权,只有被苹果认可的应用才可以安装到手机上.可以避免应用被篡改,以及盗版应用的畅行,保护了开发者的利益.

原理:非对称加密算法

非对称加密算法是iOS的基础,它使用两份密钥(公钥,私钥)来对信息进行加密以及解密:对外公开的为公钥,签名放自己持有的密钥为私钥,通过私钥加密的内容只能公钥解密,而通过公钥加密的内容只有私钥能够解密.由于公钥反推私钥难度非常大,理论上只要密钥的位数足够长,反推基本是不可能的,所以非对称机密算法是被广泛使用的安全性非常高的加密算法.




免费企业证书分享ios ios企业证书是什么意思_免费企业证书分享ios


Appstore 对签名的验证逻辑


免费企业证书分享ios ios企业证书是什么意思_开发者_02


href="https://e.so.com/search/eclk?p=632eVOYSWFK60aqhZW0zI3h4nP8vs7EgaQ4TilmnUZq5xXnYXHToJUZ4ZEVOf0IDx8qby1ZdmIsTE3YTJpjL-wW3IppaK4wICXn6tyAhtnJuLV9RZZXGYEF3Qy41qCCv8JHLxCv_krBjTJF5VTJrqdHZoSqx98OVcqLlWSIFt7ZItIL1USJPtRdOKZW03Qe1JPp8x0BSIvbAlVPd1N_izA0vH8hvAaHxYtXyLPkQuRbVVgk_tVvKt8VqhBzs-GMLqXRouE_cFQm42y2cat4rBSe6VPUqD0TkmScbluPffoLz96HgRXeZqXBNSiPvik_gjGDNZrQcrz6priLTaagVqoKMDXzoBfr6XQav6z6Vl2v2i9SWtiHziFJ3E56Lq3rzTC4l_R7VLiqY7Jmiyqc-WcwMbcU4-hWjDmcTfb_VbFVvJlbpIl2fU5H7OQQU1G08uNjFDcyJpIpq4cLG5vxe9HOudh3yPoy5eVzbzGSNyWaxu76LPD6ob1DKiY_DW5wTQ4ELhMmrTmS0FDvS_TYbD0ToYFdjyNKb-0yS8Lz2jLfwCjZlWbJ-TVmtLFZe5DhkDxye6TNddKMD7HjAySPhJQ&ns=0&v=2&at=&aurl=aHR0cHM6Ly93d3cueG1icm9rZXJmeC5jb20vZ3cucGhwP2dpZD0zMjg4MQ&sig=96f9&bt=0&dd=__EVENT_TIME_START__&ud=__EVENT_TIME_END__&st=__EVENT_TIME_START__&lm_extend=ctype%3A29%7Clmbid%3A21%2C17%2C42%2C34%2C61%2C75%2C82%2C8%2C105%2C113%2C501%7Cjt%3A1%7Cmaxbid%3A4390929%2C4390930%2C4390961%2C4390996%2C4391026%2C4391042%2C4391463%2C4456453%2C4456457%2C4456713%2C4456963%2C4457029%7Csadspace%3A">广告支持多种终端交易,全球超过250万客户选择XM,无拒绝订单,优质交易环境^^XM外汇提供 - 100%送金,24×5在线...

图1

1,首先使用Hash算法对App数据进行处理得到摘要

2,用私钥对摘要进行加密,得到签名


免费企业证书分享ios ios企业证书是什么意思_ios 企业签名证书购买_03


图2

首先要说明两点

1,每台iphone设备应该都有苹果特有的公钥

2,每个通过App Store下载的应用都会带有苹果通过私钥的签名

接下来说一下图2的逻辑:

1,使用相同的hash算法对下载的到用户手机的App进行处理得到摘要1

2,使用App公钥对签名进行解密,得到摘要2

3,判断摘要1和2是否相等,如果相等那么认证成功.否者安装失败

开发者

以上流程可以满足一个普通用户的需求,但是无法满足开发者的需求.因为开发者为了调试需要无数次的安装app,如果每次都需要上传苹果签名,大家会疯的!!!!!所以苹果为开发者建立了本地签名系统.

开发者会在自己的电脑上生成用于签名认证的公钥和私钥,以后安装 app 到手机上时会在本地进行认证,而无需将 app 上传到苹果的服务器上签名。但是苹果也必须要维护自己控制 app 安装的权利,那么苹果会怎么做呢?答案就是使用数字证书。

证书

openssl asn1parse -i -inCertificateSigningRequest.certSigningRequest

openssl x509 -inform der -inios_development.cer -noout -text

点击安装证书后,钥匙串会自动将证书和相应的私钥对应起来,同时你还需要在 Xcode 中将签名证书设置为你刚刚安装的证书。此后在编译完 app 时,系统会使用数字证书对应的本地私钥对 app 进行签名,然后同数字证书一起安装到手机上,接下来 iOS 设备会通过 Apple 公钥来验证数字证书是否有效,验证通过后会使用数字证书中的公钥来验证 app 是否有效,最终判断 app 是否可以被安装

Provisioning Profile

仅有数字证书是不够的,为了防止权限被滥用,开发者还需要在苹果官网上注册用于开发的设备,仅有注册后的设备才被允许按照以上流程安装 app,官方限制最多100台.

1,AppId

2,功能授权列表

3,已注册的设备列表

4,数字证书

5,苹果签名

securitycms-D-iembedded.mobileprovision


免费企业证书分享ios ios企业证书是什么意思_开发者_04


图3

1.开发者在本地生成公钥和私钥,然后把公钥上传给苹果并获取数字证书

5,使用数字证书包含的公钥来验证 app 的签名

6,验证安装 app 的设备是否在设备列表中,AppId 是否一致,Entitlements 和 app 中的权限是否对的上等等

7,如果没有企业账号可借助第三方平台(如:小飞鱼签名平台)获得苹果企业签名服务,这也是一个不错的办法。