Reset cert and provisioning profile for appwith push notification feature

zz/2024/7/13 10:25:31

参考文档:

APNS tutorial: http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1

之前写的apns笔记:http://blog.csdn.net/totogogo/article/details/7376214


注意:在xcode里开发带notification功能的app时,完全不需要有APNS push certificate。只有用于send push notification的server side 才需要这个cert!!


前提条件:在keychain tool里,有你的iOS developer key (至少有private key),以及对应的cert (该cert可以来自online dev center,也可能来自admin给developer的p12 file)

 

1. 如果没有publickey,通过这条link来生成。必须生成,否则步骤2会出错。

 

2. inkeychain tool > login > keys, right click the iOS developer private key,select “request a certificate from a certificate authority with XXXX key”,input your apple account email in “User email address”, leave “CA email address”empty,select “Saved to disk” option, click Continue. it will generate a .certSigningRequest file。该file用于重新生成该app的pushnotification cert

 

Note: itis recommended you use the same email address that you used to sign up for theiOS Developer Program, but it seems to accept any email address just fine

 

3. logindev member center (https://developer.apple.com/membercenter/), access “Certificates,Identifiers & Profiles” page, select “Identifiers > App IDs”, highlightthe app you want to renew/reset push cert, click “Edit”

 

4. click“Revoke”button if there is existing SSL Certificate in “push notification”section. 这时你access “Certificates > Development”page,你会看到之前存在的APNs push cert已经被删除!

 

5.access the “app ID”edit page again, find push notification” section, tick thecheckbox, and then click “Create Certificate”button, 把步骤2生成的.certSigningRequestfile upload,这样就会生成一个APNs cert,该cert会绑定到该app ID上。同时你在“Certificates> Development”page里也可以看到这个cert item,cert是用于Yourserver only send push notifications to that particular app, not to any otherapps。download this cert to local (aps_development.cerfile)。aps cert for development只有三个月有效期,而apscert for distribution有一年有效期,你需要在到期之前进行renew

然后double click下载的push SSL cert “aps_development.cer”fileto import it to keychain。如果你用c#来send notification,那么把push SSL cert导入keychain是必要的,因为后面在生成pushSSL p12 file for c#的步骤中要在keychain tool里对其进行操作!如果你是使用php,那么就不必导入“aps_development.cer”file

 

Note:

* 当你新建了push SSL cert之后,需要在Xcode里updateprovisioning profile并clean and recompile your project!!

 

 

6.export private key from keychain as a p12 file. in keychain tool > login> keys, right click the iOS developer private key, select “Export”,导出过程中需要你为生成的文件设置一个密码,假设为“123456”

 

7. 这时我们生成了三个files

* CSR (.certSigningRequest, 步骤2生成)

* SSL certificate for server to send notification(aps_development.cer, 步骤5生成)

* private key  (.p12, 步骤6生成)

把这三个文件放在一起。

注意:CSR文件其实已经没有用了,你可以删除它。但是如果你的cert过期了,你需要相同的CSR来上传到server生成新的cert。当然你也可以通过existingprivate key来重新生成CSR。

 

8 通过aps_development.cerand .p12 这两个文件执行下列命令来生成PEM file for php server to send notification.

 

1)Convert the .cer file into a .pem file.

openssl x509 -in aps_development.cer -inform der -out aps_development.pem

2)Convert the private key’s .p12 file into a .pem file。在此过程会要你输入.p12的密码,并为生成的pemfile设置密码

openssl pkcs12 -nocerts -out privatekey.pem -in privatekey.p12

3)把步骤1)和 2)生成的2个pen file合并成一个pen file, 该pen file就是供php server用来send notification的文件!!

cat aps_development.pem privatekey.pem > ck.pem

4)测试push SSL cert ( .pem file) and private key( .pem file)是否能成功连接APNS server.

telnet gateway.sandbox.push.apple.com 2195

上述命令尝试创建一个未加密的connection to dev apnsserver

openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert aps_development.pem -key privatekey.pem

上述命令尝试使用push SSL cert and private key的PEMfile来创建一个secure connection。执行该命令时要求输入private key pen file的密码。如果成功连接,你会看到一大串的output。然后你应该能够输入一些字符,当你输入enter之后,servershould disconnect

 

注意: There are two different APNS servers: the “sandbox”server that you can use for testing, and the live server that you use inproduction mode. Above, we used the sandbox server because our certificate isintended for development, not production use.


9.下面使用步骤8的 3) 生成的ck.pem file来编写server side的php代码。

1)从http://d1xzuxjlafny7l.cloudfront.net/downloads/SimplePush.zip 下载php push代码, 并解压

2)把步骤8的3) 生成的ck.pem file 复制到php push 目录下,overwrite the old one

3)edit “simplepush.php” file following part

$deviceToken ='0f744707bebcf74f9b7c25d48e3358945f6aa01da5ddb387462c7eaf61bbad78';

$passphrase = 'pushchat';

$message = 'My first push notification!';

stream_context_set_option($ctx,'ssl', 'local_cert', 'ck.pem');

 

4)执行命令

         $php simplepush.php

 

一开始时,总是出现下面的error,怎么找也找不到原因。后来终于发现原来是由于在TextEdit里进行编辑,上面的“passphrase”变量的值的引号自动转成中文的引号,导致了低级错误!!

Warning: stream_socket_client(): Unable to set private key file`/Users/tomsonxu/Desktop/SimplePush/ck.pem' in/Users/tomsonxu/Desktop/SimplePush/simplepush.php on line 21

Warning: stream_socket_client(): failed to create an SSL handlein /Users/tomsonxu/Desktop/SimplePush/simplepush.php on line 21

Warning: stream_socket_client(): Failed to enable crypto in/Users/tomsonxu/Desktop/SimplePush/simplepush.php on line 21

Warning: stream_socket_client(): unable to connect tossl://gateway.sandbox.push.apple.com:2195 (Unknown error) in/Users/tomsonxu/Desktop/SimplePush/simplepush.php on line 21

Failed to connect: 0

 

10 生成push SSL cert (.p12) for c#to send push notification

详见http://blog.csdn.net/totogogo/article/details/7376214 的Step 14

 有一点要补充:当在visual studio 2010里打开那个c# project for notification后,rebuild solution会报错:"Newtonsoft.Json" lib can't be found。因此你要right click "JdSoft.Apple.Apns.Notifications" node and select "Add Reference...",然后添加 “Newtonsoft.Json.Compact.dll"。(该dll文件在下载的c# project的"Reference"目录)

 

 

 

 



http://www.ngui.cc/zz/2731634.html

相关文章

Logistic Regression详解

Regression是什么? Regression:找到一个模型去表示数据间的关系Linear Regression:使用线性模型拟合数据Logistic Regression:其实本质也是线性拟合,但引入了log,这个之后会详细说 也就是说,不…

c3p0配置

简介  C3P0是一个开源的JDBC 连接池&#xff0c;它实现了数据源和JNDI绑定&#xff0c;支持JDBC3规范和JDBC2的标准扩展。目前使用它的 开源项目有 Hibernate&#xff0c;Spring等。 C3P0配置  <c3p0-config> <default-config> <!--当 连接池中的连接耗…

01_Eclipse的使用方法

&#xfeff;&#xfeff; 1选择工作站 Workspace&#xff1a;表示工作站 2切换工作站 选择工作站的方式&#xff1a;File—>SwitchWorkspace这里选择其他的工作站 清除工作站的方式&#xff1a; 找到MyEclipse的安装目录&#xff1a; C:\Program Files\MyEclipse6.6\eclips…

Eclipse集成Android_NDK

&#xfeff;&#xfeff; Eclipse集成Android NDK说明 1 目录 Eclipse集成Android NDK说明... 1 2 为什么要用NDK&#xff1f;... 2 3 为什么要集成&#xff1f;... 2 4 怎样操作&#xff1f;... 2 4.1 预备条件... 2 4.1.1 Cygwin. 2…

HTML5本地存储之Web Storage

Web Storage是HTML5引入的一个非常重要的功能&#xff0c;可以在客户端本地存储数据&#xff0c;类似HTML4的cookie&#xff0c;但可实现功能要比cookie强大的多&#xff0c;cookie大小被限制在4KB&#xff0c;WebStorage官方建议为每个网站5MB。 Web Storage又分为两种&#…

Hive简介、什么是Hive、为什么使用Hive、Hive的特点、Hive架构图、Hive基本组成、Hive与Hadoop的关系、Hive与传统数据库对比、Hive数据存储(来自学习资料)

1.1 Hive简介 1.1.1 什么是Hive Hive是基于Hadoop的一个数据仓库工具&#xff0c;可以将结构化的数据文件映射为一张数据库表&#xff0c;并提供类SQL查询功能。 1.1.2 为什么使用Hive 直接使用hadoop所面临的问题 人员学习成本太高 项目周期要求太短 MapReduce实…

Java + 腾讯企业邮箱 + javamail + SSL 发送邮件(转载:http://www.cnblogs.com/LUA123/p/5575134.html)

说实话腾讯的企业邮箱真心不错&#xff01; 腾讯企业邮箱官网&#xff1a;http://exmail.qq.com/login/ 新用户注册&#xff1a;http://exmail.qq.com/onlinesell/intro 点击开通 你跟着步骤走就行了&#xff0c;没啥难的&#xff0c;如果你没有域名&#xff0c;你就去买一个…

Docker 镜像管理,显示本地镜像,查找镜像,删除镜像,镜像拉取,查看镜像的具体信息,镜像的导入和导出,将配置后的镜像commit成自己的镜像,docker history,等

一、 显示本地镜像&#xff1a; [rootlocalhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest c82521676580 3 weeks ago 109MB [rootlocalhost ~]# 二…