公钥和私钥

转载自:http://www.samirchen.com/ios-certificates/

先简单的介绍一下公钥和私钥。我们常见的加密算法有两类:对称加密算法(Symmetric Cryptographic Algorithm) 和 非对称加密算法(asymmetric cryptographic algorithm)。

对于对称加密算法,一般只有一个秘钥。通过这个秘钥对一份数据进行加密,那么有这个秘钥的人才可以用它解密这份数据。

对于非对称加密算法,一般有两个秘钥:公钥和私钥。比如你通过私钥对一份数据进行加密,那么收到这份加密过的数据的人,可以通过这个私钥对应的公钥对数据进行解密。这时他可以确认,这个数据是从你那来的(至少是你加密的)。这个私钥就相当于一个“签名”(你加的密,就是你签的字)。而这个就是iOS中Code Signing背后的原理。

Certificates

Intermediate Certificate

这个证书叫做 Worldwide Developer Relations Certificate Authority,通过这个链接可以下载:https://developer.apple.com/certificationauthority/AppleWWDRCA.cer,一般下载下来的文件名为:AppleWWDRCA.cer

为了确保你能使用其他的 iOS 开发或者发布证书,你需要下载这个证书并双击打开,它会被存储在你电脑上的 Keychain Access 中。这个证书可以认为是类似于根证书的东西,用来确定你的 iOS 开发或发布的各种证书是与苹果的开发者关联的,而不是在别的什么地方生成的。通常情况下,这个证书是由 Xcode 自动安装的。

iOS App Certificates

这里的证书一般都是 .cer 类型,分为 Development 和 Distribution 用途。一般在 Xcode 中制作即可:

当然,也可以手动制作。在苹果的 Certificates, Identifier & Profiles 网站上按照提示一步一步来:

To manually generate a Certificate, you need a Certificate Signing Request (CSR) file from your Mac. To create a CSR file, follow the instructions below to create one using Keychain Access. Create a CSR file. In the Applications folder on your Mac, open the Utilities folder and launch Keychain Access.

Within the Keychain Access drop down menu, select Keychain Access > Certificate Assistant > Request a Certificate from a Certificate Authority.

  • In the Certificate Information window, enter the following information:

    • In the User Email Address field, enter your email address.
    • In the Common Name field, create a name for your private key (e.g., John Doe Dev Key).
    • The CA Email Address field should be left empty.
    • In the “Request is” group, select the “Saved to disk” option.
  • Click Continue within Keychain Access to complete the CSR generating process.

大致步骤就是在自己的电脑上用 Keychain Access 生成一个 Certificate Signing Request文件,这会在本地创建一对 公钥/私钥,按提示步骤上传文件,苹果接收这个文件后会验证信息,然后给你创建一个认证文件供你下载,这个文件就是 .cer 格式的。这时候你双击这个.cer 文件,那么就可以在 Keychain Access 中打开,在 Certificates 选项栏中可以看到它是有私钥的,同时在 Keys 选项栏中可以看到对应的 私钥 和 公钥。

但是如果你删除掉 私钥 和 公钥,然后再双击那个 .cer 文件,就会发现此时在 Keychain Access 中打开,在 Certificates 选项栏中的这个证书没有私钥了。在其他的电脑上下载这个.cer 文件也是同样的道理,都会没有对应的私钥,那是不能使用的。那怎么办呢?可以把私钥证书导出来传到别的电脑上双击打开即可,私钥证书一般是 .p12 格式的。

APNs Certificates

这里的证书一般也是 .cer 类型的,要制作的话,按照苹果 Certificates, Identifier & Profiles 网站上的提示一步一步来做,跟上一节是一样的。

对于Certificates这块,需要注意的就是私钥证书(.p12)一定要保存好,这样当你换电脑开发或者多人开发的时候,只需要重新下载一下 .cer 文件,然后再双击导入一下 .p12 即可。

Identifiers

App ID

不多讲了,就是一个 App 对应一个 ID,通常是 com.company-name.app-name 的命名方式。

Devices

在这里添加测试设备的 UDID。

Provisioning Profiles

把前面的东西合起来:

  • Certificates (开发者认证)
  • App ID
  • Device UDID

就是 Provisioning Profile

Provisioning Profile 会通过 Xcode 或者 iTunes 导入到设备中,或者打包到一个的 .ipa安装包文件中。

更多内容可以参考: 证书相关文档

iOS 开发中的各种证书相关推荐

  1. iOS开发中遇到的一些问题及解决方案【转载】

    iOS开发中遇到的一些问题及解决方案[转载] 2015-12-29 [385][scrollView不接受点击事件,是因为事件传递失败] // //  MyScrollView.m //  Creat ...

  2. ios 开发中 动态库 与静态库的区别

    使用静态库的好处 1,模块化,分工合作 2,避免少量改动经常导致大量的重复编译连接 3,也可以重用,注意不是共享使用 动态库使用有如下好处: 1使用动态库,可以将最终可执行文件体积缩小 2使用动态库, ...

  3. iOS 开发中的多线程

    线程.进程 什么是线程.进程   有的人说进程就像是人的脑袋,线程就是脑袋上的头发~~.其实这么比方不算错,但是更简单的来说,用迅雷下载文件,迅雷这个程序就是一个进程,下载的文件就是一个线程,同时下载 ...

  4. iOS开发中使用[[UIApplication sharedApplication] openURL:]加载其它应用

    iOS 应用程序之间(1) 在iOS开发中,经常需要调用其它App,如拨打电话.发送邮件等.UIApplication:openURL:方法是实现这一目的的最简单方法,该方法一般通过提供的url参数的 ...

  5. iOS开发中各种关键字的区别

    1.一些概念 1.浅Copy:指针的复制,只是多了一个指向这块内存的指针,共用一块内存. 深Copy:内存的复制,两块内存是完全不同的, 也就是两个对象指针分别指向不同的内存,互不干涉. 2.atom ...

  6. Xamarin iOS开发中的编辑、连接、运行

    Xamarin iOS开发中的编辑.连接.运行 创建好工程后,就可以单击Xamarin Studio上方的运行按钮,如图1.37所示,对HelloWorld项目进行编辑.连接以及运行了.运行效果如图1 ...

  7. ios开发中计算代码运算时间_iOS日历、日期、时间的计算

    时间和日历的计算在iOS开发中经常看到,经常看到大家在百度,开源中国等搜索这些答案.今天写个简单的时间和日历有关的计算. 获取一个月的总天数 1.获取当月的天数 - (NSInteger)getNum ...

  8. IOS开发中UIBarButtonItem上按钮切换或隐藏实现案例

    IOS开发中UIBarButtonItem上按钮切换或隐藏案例实现案例是本文要介绍的内容,这个代码例子的背景是:导航条右侧有个 edit button,左侧是 back button 和 add bu ...

  9. iOS开发中标签控制器的使用——UITabBarController

    iOS开发中标签控制器的使用--UITabBarController 一.引言 与导航控制器相类似,标签控制器也是用于管理视图控制器的一个UI控件,在其内部封装了一个标签栏,与导航不同的是,导航的管理 ...

最新文章

  1. Leetcode | 3Sum
  2. java学习笔记2--数据类型、数组
  3. 实例教程二:短信发送器
  4. PL/SQL中模拟EBS上下文
  5. mac wmware 无网络_无线网络中常用的技术名词
  6. JavaScript中Object.keys、Object.getOwnPropertyNames区别
  7. vue 导入excel解析_VUE中导入excel文件
  8. 造成OOM的原因有哪几种?
  9. Android Debug Bridge 技术实现原理
  10. Linux/Android之perf追内存泄漏工具(api级别)
  11. PHP+Apache+MySQL+phpMyAdmin在win7系统下的环境配置
  12. python 字符串以及通过dos命令运行py脚本
  13. java中说明书/开发文档如何编写?
  14. 为什么有些蓝牙耳机有底噪?高音质便宜实惠的蓝牙耳机分享
  15. 无线摄像头接有线如何改协议_WiFi中继器——让无线传输更简单
  16. mysql 数据库修改ip_mysql数据库学习之修改主库ip地址
  17. java实现小写金额转换大写金额
  18. 三星a60android9,三星A6060官方港版安卓9固件rom线刷包:TGY-A6060ZHU1ASG1
  19. wap端使用a标签跳转不刷新问题
  20. Python脚本-自动连接校园网

热门文章

  1. ActiveMQ、RabbitMQ、RocketMQ、Kafka的介绍及优缺点说明
  2. 21. PE结构-PE各个结构的基本概念
  3. [ZJOI2006]超级麻将
  4. 理解Storm Metrics
  5. 一起来啃书——PHP看书
  6. 阿里旺旺在线客服代码 贸易通在线状态代码
  7. Redis如何高效可靠地实现主从复制?终于有人讲明白了
  8. 用Python实现磁盘IO操作全攻略,让数据流动起来!
  9. 秦始皇:请叫我数据治理专家
  10. ffmpeg转码_音视频处理神器FFmpeg