ios企业签名流程的一些的疑问

2019-05-29 10:45

ios企业签名流程的一些的疑问企业证书签名因为限制少,在国内被广泛用于测试和盗版,分发平台测试平台都是通过企业证书分发,国内一些市场像PP助手,爱思助手,一部分安装手段也是通过企业证书重签名。通过企业证书签名安装的App,启动时都会验证证书的有效期,并且不定期请求苹果服务器看证书是否被吊销,若已过期或被吊销,就会无法启动App。对于这种助手的盗版安装手段,苹果想打击只能一个个吊销企业证书,并没有太好的办法。

这里我的疑问是,苹果做了那么多签名和验证机制去限制在iOS安装App,为什么又要出这样一个限制很少的方式让盗版钻空子呢?若真的是企业用途不适合上AppStore,也完全可以在AppStore开辟一个小的私密版块,还是通过AppStore去安装,就不会有这个问题了。

000125

AppStore加密
另一个问题是我们把App传上AppStore后,苹果会对App进行加密,导致App体积增大不少,这个加密实际上是没卵用的,只是让破解的人要多做一个步骤,运行App去内存dump出可执行文件而已,无论怎样加密,都可以用这种方式拿出加密前的可执行文件。所以为什么要做这样的加密呢?想不到有什么好处。
本地私钥
我们看到前面说的签名流程很绕很复杂,经常出现各种问题,像有ProvisioningProfile文件但证书又不对,本地有公钥证书没对应私钥等情况,不理解原理的情况下会被绕晕,我的疑问是,这里为什么不能简化呢?还是以开发证书为例,为什么一定要用本地Mac生成的私钥去签名?苹果要的只是本地签名,私钥不一定是要本地生成的,苹果也可以自己生成一对公私钥给我们,放在ProvisioningProfile里,我们用里面的私钥去加密就行了,这样就不会有CertificateSigningRequest和p12的概念,跟本地keychain没有关系,不需要关心证书,只要有ProvisioningProfile就能签名,流程会减少,易用性会提高很多,同时苹果想要的控制一点都不会少,也没有什么安全问题,为什么不这样设计呢?
能想到的一个原因是ProvisioningProfile在非AppStore安装时会打包进安装包,第三方拿到这个ProvisioningProfile文件就能直接用起来给他自己的App签名了。但这种问题也挺好解决,只需要打包时去掉文件里的私钥就行了,所以仍不明白为什么这样设计。