zoukankan      html  css  js  c++  java
  • iOS 中的Certificate,Provisioning Profile 的一些注意 (不断完善中)

    注册apple id 有1年多了,这些概念还是模模糊糊的,决定在这里总结一下。

    请参阅官方文档 App Distribution Guide

    code singing的作用如下:

    Code signing your app allows the operating system to identify who signed your app and to verify that your app hasn’t been modified since you signed it. Your app’s executable code is protected by its signature because the signature becomes invalid if any of the executable code in the app bundle changes. Note that resources such as images and nib files aren’t signed; therefore, a change to these files doesn’t invalidate the signature.

    简单的说,就是保证程序的可靠性。这个机能主要用到2个文件,一个是certificate,一个是provisioning profile。

    ==========================================

    Certificate

    证明你的开发者身份。

    There are different types of signing certificates for different purposes.(针对ios开发的话,就2种,详情见下面的表格)

    There’s one Mac or iOS development certificate per team member. Therefore, development certificate names contain the person’s name. All other types of certificates are owned by the team (shared by multiple team members) and so, contain the team name. Individual developers are a one-person team, and so your name and the team name are the same.

    Table 11-2  Certificate types and names

    Certificate type

    Certificate name

    Description

    iOS Development

    iPhone Developer: Team Member Name

    Used to run an iOS app on devices and use certain technologies and services during development.

    iOS Distribution

    iPhone Distribution: Team Name

    Used to distribute your iOS app on designated devices for testing or to submit it to the App Store.

    ======================================

    Provisioning Profile 可以理解为 “授权文件“,在程序sign的过程中用到的就是这个文件。ios用到的provisioning profile分为3种,一种用于开发,一种用于ad hoc测试,一种用于像app store 发布。一个profile把 一个app id,一个certificate,多个devices 信息联系起来,用于对具体的ios程序进行sign。

    在程序的sign过程中,不单单需要provisioning profile,还需要生成这个provisioning profile时用到的certificate,这2个文件缺一不可。


    注意事项1:

    申请certificate时,要提交一个.certSigningRequest 文件,这个文件是mac系统根据当前使用的电脑生成的,里面含有和私有密匙相关的信息。如果你用了从别的电脑拷贝过来的.certSigningRequest,没有用Keychain Access生成,那么生成的certificate是无法使用的,系统提示缺少私有密匙。

    注意事项2:

    一个开发者的team Id是不会变化的,这个ID在 distribution 的certificate中会被使用到。而对于 development类型的certificate,不会使用真正的team ID,是另外的一串字符。

    注意事项3:

    Provisioning Profile 没有过期之说,只有valid 和 invalid 2种状态。 与之相关的certificate如果没有过期或被 revoke,那么它就是valid的。

    注意事项4:

    签名用的certificate和 apns certificate 没有直接关系,他们仅仅是使用了相同的 app id.  

    apns的过期时间一般为13个月(distirbution),12个月(development),当证书过期后,服务器无法发送通知,只需要用相同的app id生成新的证书,放到服务器上就可以继续推送。它和签名用的cer的过期没什么关系。

    签名用的cer过期或revoke,在不同的条件下,效果不同。参见https://developer.apple.com/support/certificates/

    简单说,就是appstore上的app不受签名证书过期的影响,也与开发者的membership无关。用企业版证书签名的程序过期则无法使用。  而用development签名的程序和appstore上的一样,过期也可以继续运行。

    注意事项5:

    Distribution的cer过期后,会自动从开发者网站消失,没有renew选项。如需发布新的程序,只需要再生成一个新的cer,并更新provisioning profile。用新cer签名的app可以覆盖旧的app,对于用户来说,根本感觉不到变化。

  • 相关阅读:
    搭建LNAMP环境(四)- 源码安装PHP7
    搭建LNAMP环境(三)- 源码安装Apache2.4
    搭建LNAMP环境(二)- 源码安装Nginx1.10
    搭建LNAMP环境(一)- 源码安装MySQL5.6
    Yii2框架RESTful API教程(二)
    Yii2框架RESTful API教程(一)
    PHP实现RESTful风格的API实例(三)
    centos7部署elk集群(filebeat+kafka+logstash+elasticsearch+kibana)
    centos7部署kafka+zookeeper集群
    ElasticSearch7.5.2通过模板管理索引副本数、分片
  • 原文地址:https://www.cnblogs.com/breezemist/p/3447146.html
Copyright © 2011-2022 走看看