技术收藏[0011]iOS打包上架iOS 开发Tips

iOS证书一览

2016-09-02  本文已影响790人  wenghengcong

本文首发于here

开发者计划

Memeership Support

关于不同计划的对比:

Developer Program Support

申请

Apple Developer Program

Apple Developer Program:苹果开发者计划,针对个人以及公司,个人通过提交相关信息可以升级为公司账号。

Apple Developer Enterprise Program

Apple Developer Enterprise Program:苹果开发者企业计划,针对企业组织(不包括公司)。

iOS那令人又气又恼的各种证书

登录开发者会员中心,在这儿,有下面的列表:

1.App ID

这是每一个应用的独立标识,在设置项中可以配置该应用的权限,比如是否用到了PassBook,GameCenter,以及更常见的push服务,如果选中了push服务,那么就可以创建生成下面所提到的推送证书,所以,在所有和推送相关的配置中,首先要做的就是先开通支持推送服务的App ID;

2.开发者证书

开发者证书(分为开发和发布两种,类型为iOS Development,iOS Distribution),这个是最基础的,不论是真机调试,还是上传到appstore都是需要的,是一个基证书,用来证明自己开发者身份的;

3.推送证书

推送证书也分为开发和生产两种,类型分别为APNs Development iOS,APNs Production iOS,该证书在appID配置中创建生成,和开发者证书一样,安装到开发电脑上;

关于开发者证书和推送证书的创建,可以看到开发和生产环境下不同的证书:

4.Devices

苹果的测试证书、发布证书以及推送证书都有对应的Provisioning Profile文件,来验证当前开发者当前应用是否能在真机设备上测试、安装或运行。为此,就需要开发者将需要在开发中进行测试或者需要安装IPA包的真机设备的UDID注册,并生成对应的Provisioning Profiles,这样真机设备才能用于测试或者安装。

5.Provisioning Profiles

一般称之为PP文件,该文件将App ID、开发者证书、设备绑定到一块儿,在开发者中心配置好后可以添加到Xcode上,也可以直接在Xcode上连接开发者中心生成,真机调试时需要在PP文件中添加真机的UDID。

需要注意的是!

PP文件,Apple Developer Program计划支持Developement、Ad Hoc、Distribution三种。

Apple Developer Enterprise Program支持Developement、Ad Hoc、In-house三种。

  1. Development

    选择开发证书,只支持在注册过UDID,并加入到PP文件中的设备上运行。可以直接在Xcode上运行,或者通过ipa安装包方式安装;
    创建时,选择开发证书以及对应设备;

  2. Ad hoc

    选择发布证书,通过Archive方式打包,同样只支持在注册过UDID,并加入到PP文件中的设备上运行。可以直接在Xcode运行,但是不能调试,通过IPA包直接分发;
    创建时,选择发布证书以及对应设备;

  3. Dictribution

    选择发布证书,通过Archive方式打包,只能在上架后,支持任何设备安装,可以直接在Xcode运行,但是不能调试,通过App Store分发;

    创建时,选择发布证书,且无需选择设备;

Apple Support

Developer Account

Certificates Support

Code Signing Support

证书制作过程

创建开发者证书

证书签名请求文件(CSR)

常用名称出现在证书对应的专用密钥中,如下图:
备注:CSR文件尽量每个证书都制作一次,将常用名称区分开来,因为该常用名称是证书中的密钥的名字;

制作完毕之后,保存“CertificateSigningRequest.certSigningRequest”文件。

登录Apple Developer,一定要使用Safari浏览器!

进入证书管理中心:

下面开始创建证书:

可以看到下图中,关于Development中有两种类型的证书:

一种是开发者证书,另外一种是开发环境推送证书。

同样,在Production中,证书种类更多,我们还是只关注App Store and Ad hoc以及Apple Push Notification service SSL(Procudtion)这两种类型。

值得一提的是,在企业开发者计划中,App Store and Ad hoc响应替换为In-house Ad Hoc

上面的过程即完整的创建了证书。

下载、安装证书

下载得到后缀为.cer的文件。
发现:此证书是由未知颁发机构签名的!

原因:
之前在keychain(钥匙窜访问)中多删了一个证书:Apple Woldwide Developer Relations Certification Authority,它是iPhone Developer证书的签发者,如果它被删除就会导致iPhone Developer证书被识别为未知颁发机构签名,然后xcode中真机调试就会出现上面的错误。

解决方案:
重新把AppleWWDRCA放回去;从Apple官网(http://developer.apple.com/certificationauthority/AppleWWDRCA.cer)下载一个,下载后拖入keychain(钥匙串访问)-登录目录。

创建App ID

生成App ID之后,我们可以修改,所以下一步,我们要添加推送证书。

创建推送证书

点击Edit之后,进入push证书设置:

进入:Development SSL Certificate

剩下的步骤,即重复上面生成iOS Development证书的步骤,先制作一个证书签名文件(CSR),然后制作Push证书。最后看到这个:

下载证书即可。
当然,我们一步只完成了Development SSL Certificate,还有Production SSL Certificate,上图的“Add Another”即可快速添加另一个证书。此处就略。

注册设备

查看手机的UUID
电脑连接上手机,打开iTunes,选择摘要:

一开始,看不到UUID号,连续点击序列号的位置,就会变换出现UUID和其他信息,如:

当然也可以通过Xcode查看iPhone,前提是你的设备已经通过Xcode连接过,所以Xcode会保留你的设备信息,Window->Devices:
如下:

填写UUID和自己想命名的设备名即可完成注册设备。

生成Provisioning Profile文件

生成用于真机测试的pp文件:

生成用于提交的pp文件:

更多关于推送证书的Tips

服务器使用的推送证书

  1. 导出.cer证书文件

选中“Login”和“My Certificates” ,导出退送证书时要选中证书文件,不要展开private key。命名为:
aps_development.cer

  1. 导出.p12私钥文件

选中推送证书的私钥文件,注意导出为.p12文件,命名为:aps_push.p12

这一步,需要我们输入一个自定义的密码,可简可繁,但是千万要记住!

  1. 转换为.pem文件

上面两个文件都要先转换为.pem文件,最终要将转换后的两个.pem文件合并为一个.pem文件。

aps_development.cer转换为.pem文件:

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

aps_push.p12转换为.pem文件:

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

这里首先需要我们输入在第二步导出私钥文件中定义的密码。其次,还需要为新生成的pem文件设置一个密码。此密码为上传PUSH平台所用的密码!所以,推荐所有密码一致,以防混淆。

  1. 合并.pem文件

合并上一步得到的两个文件:

cat aps_development.pem aps_push.pem > push.pem
  1. 测试

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

telnet gateway.sandbox.push.apple.com 2195

它将尝试发送一个规则的,不加密的连接到APNS服务。如果看到下面返回,即能够到达APNS。按下Ctrl+C关闭连接。

Trying 17.172.232.46...
Connected to gateway.sandbox.push-apple.com.akadns.net.
Escape character is '^]'.

这一步确定的是APNs是可访问的,下面将要确定证书是否正确:

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

首先会要求你输入密码,即私钥那一步生成的密码。

假如输出:

CONNECTED(00000003)
depth=1 /C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2012 Entrust, Inc. - for authorized use only/CN=Entrust Certification Authority - L1K
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
 0 s:/C=US/ST=California/L=Cupertino/O=Apple Inc./CN=gateway.sandbox.push.apple.com
   i:/C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2012 Entrust, Inc. - for authorized use only/CN=Entrust Certification Authority - L1K
 1 s:/C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2012 Entrust, Inc. - for authorized use only/CN=Entrust Certification Authority - L1K
   i:/O=Entrust.net/OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/OU=(c) 1999 Entrust.net Limited/CN=Entrust.net Certification Authority (2048)
---
Server certificate
-----BEGIN CERTIFICATE-----
证书内容
-----END CERTIFICATE-----
subject=/C=US/ST=California/L=Cupertino/O=Apple Inc./CN=gateway.sandbox.push.apple.com
issuer=/C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2012 Entrust, Inc. - for authorized use only/CN=Entrust Certification Authority - L1K
---
Acceptable client certificate CA names
/C=US/O=Apple Inc./OU=Apple Certification Authority/CN=Apple Root CA
/C=US/O=Apple Inc./OU=Apple Worldwide Developer Relations/CN=Apple Worldwide Developer Relations Certification Authority
/C=US/O=Apple Inc./OU=Apple Certification Authority/CN=Apple Application Integration Certification Authority
---
SSL handshake has read 3202 bytes and written 2177 bytes
---
New, TLSv1/SSLv3, Cipher is AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1
    Cipher    : AES256-SHA
    Session-ID:
    Session-ID-ctx:
    Master-Key: 55D12EFFB2DCFE0DE4A1E81013A1B511B919C080A4A2128D97ED87DAAD541055227DDEA33846B13E861A77BAACA6E6C0
    Key-Arg   : None
    Start Time: 1468981758
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---

表明,证书有效,连接成功。

更多关于企业证书的Tips

未整理

Provision iOS IPA App for In-House Enterprise Distribution

【iOS开发】企业版证书($299)In-House方式发布指南

苹果企业级证书IDP申请流程

iOS证书申请和APP上传到apple store

Five Tips for Using Self Signed SSL Certificates with iOS

Understanding iOS Certificates

证书问答

  1. Code signing is required for product type 'Unit Test Bundle' in SDK 'iOS 8.0'

  2. No code signing identities found

  3. 苹果证书 “此证书的开发者无效” missing ios distribution signing identity

选中证书->显示简介->信任->使用此证书时,选择“始终信任”

  1. The application could not be verified

解决方案

简言之:(1)删掉device 里对应的app,重新运行(2)或者选择该app对应的证书和code signing(3)或者修改bundle id

  1. Create iOS “In-House and Ad Hoc” certificate option disabled
上一篇下一篇

猜你喜欢

热点阅读