iOS 关于.cer证书与.p12证书的区别

.cer证书仅包含公钥,.p12证书可能既包含公钥也包含私钥。

1、为什么第三方推送服务商或者一些常用的APNs软件要用p12

如果要正确连接苹果APNs服务器,发起连接的程序必须掌握【公钥】和【私钥】,所以如果拿一个.p12文件肯定是可以被接受的,但是如果你给了别人.p12文件,那么这个人如果随意传播你的.p12文件的话,则收到你的.p12文件的人就可以冒充你来发送你的App推送。所以你必须充分信任拿到你的p12文件的软件或者服务商。

2、为什么Easy Apns Provider用cer

cer是苹果默认的证书文件,有丰富的API可以直接拿cer来用,所以为了简化代码(说白了就是开发者比较懒),所以Easy APNs使用了cer。

3、为什么Easy APNs Provider使用仅含公钥的cer可以连接苹果的APNs服务器

第一节说了,必须要公钥和私钥才可以连APNs服务器,那么Easy APNs Provider为什么只用包含公钥的cer?这是因为一般开发者申请APNs证书的时候首先会在自己机器上创建一个【秘钥和公钥对】,然后用公钥去苹果服务器申请证书,也就是这个cer,而这个cer对应的秘钥在我们申请前已经保存到了macOS的KeyChain中,KeyChain有能力将申请到的cer与之前保存的秘钥对应,而对应这个过程是通过MacOS系统提供的API来完成的,所以你连接服务器时会提示要访问钥匙串是否允许的对话框。

4、如何让Easy APNs Provider使用p12

Easy APNs Provider可以使用p12么?答案是不能直接使用,但是可以间接使用,方法也很简单:

(1)首先在macOS中双击你的p12文件,把公钥和秘钥对导入到KeyChain

(2)打开KeyChain(钥匙串),在“登录”(上面),“证书”下面里找到您刚刚导入的证书(证书名字中间应该有IOS Push这类的字样),然后右键点击他->导出,文件格式选择“证书.cer”,将cer文件导出后方可给Easy APNs Provider使用。

你可能感兴趣的:(iOS 关于.cer证书与.p12证书的区别)