APNS push 推送

第一步:证书创建

IOS的推送证书,有有效期限制,一般为一年。当我们证书过期的时候,就需要重新生成证书了。有一段时间没有上苹果网站了,昨天上去一看,此奥,改版了,下边我们将重新生成一个正式环境的push推送的证书。

1、先打开钥匙串(应用程序-实用工具-钥匙串访问),请求一个证书



常用名称写为:2013.04.27_push_production_***。并保存到磁盘上。


2、进入打开苹果网站的证书标签页面,选择 Identifiers标签下边的App IDs子标签,显示下边图片。红色圈中的是我要重新生成push签名的证书。点击此证书。



3、证书详情标签,罗列出了所有的功能状态,最后的Push Notifications显示可以配置,并不是Enabled可以状态,所以点击Setting功能重新上传证书。



4、证书设置页面中,最下边的Push Notifications 如下图所示。



其中:Development SSL Certificate是测试环境证书,Production SSL Certificate为正式环境证书,我们生成正式环境的证书,点击后面的Create Certificate。


5、Create Certificate页面如下。点击下边的continue。



6、选择上传的证书,我们第一步已经生成了一个证书,上传此证书。



7、上传成功后,将会显示下边的图片。有可能在生成证书的过程中会有loading框一直在转转转,这时候重新进入此页面即可。其实此时证书已经生成了。



此时,push证书已经生成,上边会标注过期时间,push的证书有效期为一年。点击Download下载此证书。


8、双击刚才下载的证书,会自动把此证书加入到钥匙串的签名中


第二步:导出后台使用证书

php 后台需要 pem 证书,java 和 .NET 后台需要 .p12 证书

模式一:.p12 证书的创建

1、打开钥匙串,选择刚刚安装好的 push 证书,如下图标示,红色圈中的,既是我刚才添加的证书,展开此证书



先右键点击 Apple Production IOS PushServices:com.***.***,先导出一个.p12文件。命名为cert.p12。在导出的过程中会让输入导出密码,输入相应的密码即可,并输入自己的邮箱。

模式二:pem 证书的创建,有两种方案

方案一:

1、打开钥匙串,选择刚刚安装好的 push 证书,如下图标示,红色圈中的,既是我刚才添加的证书,展开此证书



先右键点击 Apple Production IOS PushServices:com.***.***,先导出一个.p12文件。命名为cert.p12。在导出的过程中会让输入导出密码,输入相应的密码即可,并输入自己的邮箱。


2、在2012.04.27_push_producation_***上点击右键,导出一个.p12的文件,命名为key.p12,与上边相同在导出的过程中会让输入导出密码,输入相应的密码即可。



3、到此为止,我们已经有了两个.p12文件,把他们放到同一个文件夹(aaa)下,需要把两个.p12文件转换成.pem文件。

a.先打开终端,切换到文件夹aaa下执行

[cpp]  view plain  copy
  1. openssl pkcs12 -clcerts -nokeys -out cert.pem -in cert.p12  

在执行的时候,将会让输入密码,输入刚才设置的密码即可生成一个cert.pem文件。

b.再执行:

[cpp]  view plain  copy
  1. openssl pkcs12 -nocerts -out key.pem -in key.p12  

此时要注意在终端中的提示,第一次输入的密码是生成证书时候的密码,第二次第三次输入密码是设置key.pem的新密码。

c.如果需要对 key不进行加密,执行下边语句

[cpp]  view plain  copy
  1. openssl rsa -in key.pem -out key.unencrypted.pem  

d.然后就可以合并两个.pem文件,这个ck.pem就是服务端需要的证书了。

[cpp]  view plain  copy
  1. cat cert.pem key.unencrypted.pem > ck.pem  

方案二:

cd  进入证书所在目录

.cer文件转换成.pem文件:

$ openssl x509 -in aps_developer_identity.cer -inform der

-out PushCert.pem

把私钥Push.p12文件转换成.pem文件:

$ openssl pkcs12 -nocerts -out PushKey.pem -in Push.p12

Enter Import Password:

MAC verified OK

Enter PEM pass phrase:

Verifying – Enter PEM pass phrase:

你首先需要为.p12文件输入passphrase密码短语,这样OpenSSL可以读它。然后你需要键入一个新的密码短语来加密PEM文件。还是使用”pushchat”来作为PEM的密码短语。你需要选择一些更安全的密码短语。

注意:如果你没有键入一个PEM passphraseOpenSSL将不会返回一个错误信息,但是产生的.pem文件里面将不会含有私钥。

最后。把私钥和证书整合到一个.pem文件里:

$ cat PushCert.pem PushKey.pem > ck.pem

为了测试证书是否工作,执行下面的命令:

$ telnet gateway.sandbox.push.apple.com 2195

Trying 17.172.232.226…

Connected to gateway.sandbox.push-apple.com.akadns.net.

Escape character is ‘^]’.

它将尝试发送一个规则的,不加密的连接到APNS服务。如果你看到上面的反馈,那说明你的MAC能够到达APNS。按下Ctrl+C 关闭连接。如果得到一个错误信息,那么你需要确保你的防火墙允许2195端口。

然后再次连接,这次用我们的SSL证书和私钥来设置一个安全的连接:

$ openssl s_client -connect gateway.sandbox.push.apple.com:2195

-cert PushChatCert.pem -key PushChatKey.pem

Enter pass phrase for PushChatKey.pem:

你会看到一个完整的输出,让你明白OpenSSL在后台做什么。如果连接是成功的,你可以键入一些字符。当你按下回车后,服务就会断开连接。如果在建立连接时有问题,OpenSSL将会给你一个错误消息,

ck.pem文件就是我们需要得到php连接APNS 的文件,将ck.pempush.php放入同一目录上传到服务器。

注意:上面两种方式的简单命令描述如下

生成php端push证书
1.openssl x509 -in aps_production.cer -inform DER -out aps_production_identity.pem -outform PEM
2.openssl pkcs12 -nocerts -out PushChatKey.pem -in PushChat.p12
//去除PEM pass phrase密码
openssl rsa -in PushChatKey.pem -out apns-pro-key-noenc.pem
3. cat aps_production_identity.pem apns-pro-key-noenc.pem > ck.pem

第二种方式
 1.     openssl pkcs12 -clcerts -nokeys -out cert.pem -in Certificates.p12
   2.     openssl pkcs12 -nocerts -out key.pem -in Certificates.p12
   3.     openssl rsa -in key.pem -out key.unencrypted.pem
   4.     cat cert.pem key.unencrypted.pem > ck.pem

第三步:客户端代码
1、首先在项目的AppDelegate.m中加入以下两个代理方法
复制代码
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { 
    NSString *token = [NSString stringWithFormat:@"%@", deviceToken];
    //获取终端设备标识,这个标识需要通过接口发送到服务器端,服务器端推送消息到APNS时需要知道终端的标识,APNS通过注册的终端标识找到终端设备。
    NSLog(@"My token is:%@", token);   
}  
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {   
    NSString *error_str = [NSString stringWithFormat: @"%@", error];   
    NSLog(@"Failed to get token, error:%@", error_str);   
}
复制代码

2、在AppDelegate.m的(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法中加入

注册消息通知推送能力;加入当应用程序处于未启动状态时,判断是否由远程消息通知触发;加入清除消息推送通知标记。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
syncrypto可以用来将一个文件夹里面所有文件同步到另外一个加密的文件夹中, 一般来说,可以这样使用: syncrypto                         syncrypto 文件夹A  <---------------------> 加密文件夹B <-------------------> 文件夹C  机器X              (可以放在不安全的地方,例如云存储                机器Y 加密文件夹B中的文件都是加密过的,所以可以把它放在不怎么安全的地方(例如云盘,公共硬盘等) 明文文件和加密文件是一一对应的关系,所以每次同步只会添加(删除/修改)那些需要的文件,这样 很适合那些基于文件系统的同步工具,例如云盘、rsync等。 同步过程是双向的,所以,文件不仅仅是从明文文件夹同步到加密文件夹,同样也会从加密文件夹同步到 明文文件夹,syncrypto会根据算法选择最新的。 如果有冲突的话,syncrypto会将明文文件重命名(加上单词conflict),然后将密文文件同步过来 syncrypto是不会删除文件的,如果同步过程中需要删除或者覆盖文件,syncrypto会将文件移动 到废纸篓里面。密文文件夹的废纸篓在_syncrypto/trash下,明文文件夹的废纸篓在 .syncrypto/trash下。密文文件夹废纸篓里面的文件一样是加密过的。 主要 Feature : 双向加密同步 加密文件与明文文件是一一对应的关系 灵活的同步规则配置(方便将某些不必要同步的文件排除) 同时支持 Python2,Python3, Windows, Linux, OS X 比较全面的测试用例覆盖 标签:syncrypto

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值