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 ...
随机推荐
- bug记录_document.defaultview.getcomputedstyle()
页面中使用document.defaultview.getcomputedstyle()在火狐下取不到值. 原本方法现在$(document).ready()中,换到window.onload里就可以 ...
- uitableview 关于键盘挡住输入框解决方法
// // AboutKeyBoardEventViewController.m // QueryBussinessInfo // // Created by mac on 16/8/23. // C ...
- sql server显示某一列中有重复值的行
sql server查询一张表 ,显示某一列中有重复值的行,可以这样写: Select * From 表名 where 列名 in(Select 列名 From Table group by 列名 h ...
- HDU - 1045 Fire Net(二分匹配)
Description Suppose that we have a square city with straight streets. A map of a city is a square bo ...
- Python 2 中的编码
在 Python 尤其是 Python2 中,编码问题是困扰开发者尤其初学者的一大问题.什么 Unicode/UTF-8/str ,又是 decode/encode 的,搞得人头都大了.其实不然,这有 ...
- 查看apk包及Activity名方法
查看apk包名方法activity名: 方法一: aapt dump badging +客户端包所在路径+客户端包名称 如: aapt.exe dump badging K:\Apk\fanxing. ...
- 升级3.2.3后 could not find driver
求解,之前一切正常,升级3.2.3后提示找不到数据库驱动我用的是mysql,也没有设置DB_DSN错误位置FILE: C:\Users\Administrator\workspace\test\Thi ...
- hdu_5773_The All-purpose Zero(LIS)
题目链接:hdu_5773_The All-purpose Zero 题意: 给你一串数,让你求LIS,不过这里的0可以改变为任意数 题解: 官方题解讲的很清楚 1010 The All-purpos ...
- 取出parentid为null的顶级栏目 等号改为 is null 避免null当做字符串,
mysql中查询字段为null或者不为null 在mysql中,查询某字段为空时,不可用等号 = null, 而是 is null,不为空则是 is not null select * from ...
- Linq第二讲
这一讲,来说说集合.因为linq主要用于对数据源进行查询,集合是最常见的数据源. 集合 形式: 数组,列表List<T> Arraylist等. 特点: 可通过索引或键访问.可进行fore ...