iOS 开发中的各种证书
公钥和私钥
转载自: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 开发中的各种证书的更多相关文章
- iOS开发中遇到的一些问题及解决方案【转载】
iOS开发中遇到的一些问题及解决方案[转载] 2015-12-29 [385][scrollView不接受点击事件,是因为事件传递失败] // // MyScrollView.m // Creat ...
- 总结iOS开发中的断点续传那些事儿
前言 断点续传概述 断点续传就是从文件赏赐中断的地方重新开始下载或者上传数据,而不是从头文件开始.当下载大文件的时候,如果没有实现断点续传功能,那么每次出现异常或者用户主动的暂停,都会从头下载,这样很 ...
- iOS开发中静态库之".framework静态库"的制作及使用篇
iOS开发中静态库之".framework静态库"的制作及使用篇 .framework静态库支持OC和swift .a静态库如何制作可参照上一篇: iOS开发中静态库之" ...
- iOS开发中静态库制作 之.a静态库制作及使用篇
iOS开发中静态库之".a静态库"的制作及使用篇 一.库的简介 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.库的类型? 根据源代码的公开情况,库可以分为2种类 ...
- ios开发中的小技巧
在这里总结一些iOS开发中的小技巧,能大大方便我们的开发,持续更新. UITableView的Group样式下顶部空白处理 //分组列表头部空白处理 UIView *view = [[UIViewal ...
- IOS 开发中 Whose view is not in the window hierarchy 错误的解决办法
在 IOS 开发当中经常碰到 whose view is not in the window hierarchy 的错误,该错误简单的说,是由于 "ViewController" ...
- [转]iOS开发中的火星坐标系及各种坐标系转换算法
iOS开发中的火星坐标系及各种坐标系转换算法 源:https://my.oschina.net/u/2607703/blog/619183 其原理是这样的:保密局开发了一个系统,能将实际的坐标转 ...
- iOS开发中常见问题集锦
在iOS开发中,会出现各种各样的问题.今天,就把这些常见的问题以及各位大牛的解决方案汇总下,方便以后查阅: 常见错误: 1. linker command failed with exit code ...
- iOS开发中获取WiFi相关信息
iOS 开发中难免会遇到很多与网络方面的判断,这里做个汇总,大多可能是与WiFi相关的. 1.Ping域名.Ping某IP 有 时候可能会遇到ping 某个域名或者ip通不通,再做下一步操作.这里的p ...
随机推荐
- PerformSelector 和 NSInvocation
- Lucene基础(2)
上一篇:Lucene基础(1) 一.Lucene术语 Document, Field, Term, Query, Analyzer相信在其中大多数在之前已经理解了...对其中部分概念详细说明 Docu ...
- Delphi用ADOquery主从表例子(转)
http://blog.csdn.net/kandy_zheng/article/details/1639184 在sql server 的northwide 中建立主表 create table s ...
- 高精度运算专题1-加法运算(The addition operation)
这个专题呢,我就来讲讲高精度的加法,下面是一个计算加法的函数(用数组a加上数组b结果存到数组c里面). 思路:先测一下数组a和数组b的长度,分别放到a[0].b[0]里面去,再从第二位开始相加,记得满 ...
- Openjudge-计算概论(A)-第二个重复出现的数
描述: 给定一个正整数数组(元素的值都大于零),输出数组中第二个重复出现的正整数,如果没有,则输出字符串"NOT EXIST". 输入第一行为整数m,表示有m组数据.其后每组数据分 ...
- 使用solrj查询数据(java代码)
实体类Student,添加Field注解 package com.cs.solr.entity; import org.apache.solr.client.solrj.beans.Field; pu ...
- 笔记一:OOAD与UML
一.面向对象的概念与方法 1. 面向对象 1.1. 面向对象是一种系统建模技术 1.2. 面向对象编程是按照OO的方法学来开发程序的过程 1.3. 通过分析系统内对象的交互来描述或建模一个系统 1. ...
- 【CRC校验】学习笔记
#include<stdio.h> unsigned ]= { 0x01,0x02,0x03,0x04,0x05,0x06 }; ] = { 0x0000, 0x1021, 0x2042, ...
- __doPostBack初识
周五在公司看到有看到Request.Params["__EVENTARGUMENT"]的代码不解,不解遂上网查找,发现一篇文章<Understanding the JavaS ...
- Java语言国际化
事实上,Java语言不可能支持所有国家和语言,如需要获取Java语言所支持的语言和国家,可调用Locale类的getAvailableLocale方法获取,该方法返回一个Locale数组,该数组里包含 ...