公钥和私钥

转载自: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开发中的断点续传那些事儿

    前言 断点续传概述 断点续传就是从文件赏赐中断的地方重新开始下载或者上传数据,而不是从头文件开始.当下载大文件的时候,如果没有实现断点续传功能,那么每次出现异常或者用户主动的暂停,都会从头下载,这样很 ...

  3. iOS开发中静态库之".framework静态库"的制作及使用篇

    iOS开发中静态库之".framework静态库"的制作及使用篇 .framework静态库支持OC和swift .a静态库如何制作可参照上一篇: iOS开发中静态库之" ...

  4. iOS开发中静态库制作 之.a静态库制作及使用篇

    iOS开发中静态库之".a静态库"的制作及使用篇 一.库的简介 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.库的类型? 根据源代码的公开情况,库可以分为2种类 ...

  5. ios开发中的小技巧

    在这里总结一些iOS开发中的小技巧,能大大方便我们的开发,持续更新. UITableView的Group样式下顶部空白处理 //分组列表头部空白处理 UIView *view = [[UIViewal ...

  6. IOS 开发中 Whose view is not in the window hierarchy 错误的解决办法

    在 IOS 开发当中经常碰到 whose view is not in the window hierarchy 的错误,该错误简单的说,是由于 "ViewController" ...

  7. [转]iOS开发中的火星坐标系及各种坐标系转换算法

     iOS开发中的火星坐标系及各种坐标系转换算法 源:https://my.oschina.net/u/2607703/blog/619183   其原理是这样的:保密局开发了一个系统,能将实际的坐标转 ...

  8. iOS开发中常见问题集锦

    在iOS开发中,会出现各种各样的问题.今天,就把这些常见的问题以及各位大牛的解决方案汇总下,方便以后查阅: 常见错误: 1. linker command failed with exit code ...

  9. iOS开发中获取WiFi相关信息

    iOS 开发中难免会遇到很多与网络方面的判断,这里做个汇总,大多可能是与WiFi相关的. 1.Ping域名.Ping某IP 有 时候可能会遇到ping 某个域名或者ip通不通,再做下一步操作.这里的p ...

随机推荐

  1. Union、Union All、Except、InterSect的区别

    UNION: 将多个「结果集 (result set)」的「行 (row)」合并,作为单个结果集返回,并移除重复的行.若有重复的行,只留下一个. UNION ALL: 将多个「结果集 (result ...

  2. 一个简单的Servlet工具

    以前老师在项目中用过一个Sevlet的工具,就是在请求Servlet的时候带一个参数,该参数决定要执行Servlet中的方法, public class ServletUtils extends Ht ...

  3. shell脚本学习(五)

    1.统计文件的行数.单词数.字符数 1)行数: wc -l file cat file | wc -l 2)单词数 wc -w file cat file | wc -w 3)统计字符数 wc -c ...

  4. CMake VS工程总结

    1.设置输出后缀 set(CMAKE_DEBUG_POSTFIX "d") 2.设置输出目录 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_ ...

  5. ckeditor 插件

    dialog 下面 建立一个 插件.js CKEDITOR.dialog.add("about", function (a) { var aaa = "<form& ...

  6. Struts2透过自定义拦截器实现登录之后跳转到原页面

    Struts2通过自定义拦截器实现登录之后跳转到原页面 这个功能对用户体验来说是非常重要的.实现起来其实很简单. 拦截器的代码如下: package go.derek.advice; import g ...

  7. SVG中image tag的高亮

    今天下午和晚上全部在实验室调试scs可视化,下午主要时间在调试字符云图的东西,不过感觉没有提升,还是不好看,囧~~ 把力道图中的线条给调整了,调细之后,好看了不少. 因为需要多个区域交互,也就是需要高 ...

  8. CSS3--阴影,渐变,背景图片

    文字阴影.element{ text-shadow:1px 1px 1px #cccccc;}先右再下第一个值:右侧阴影的大小第二个值:下方阴影的大小第三个值:模糊距离(阴影从开始变淡到完全消失的距离 ...

  9. 在自学php的路上不知道怎么走!!

    在自学php的路上不知道怎么走!! 真希望有人给我指点一二!!!

  10. thinkphp的目录结构设计经验总结

    用thinkphp开发了好些项目了:最近准备抽空写一些经验总结: 希望能给刚开始接触tp的童鞋们提供一些开发的方案:少走一些弯路:少踩一些坑: 这些绝对都是些精华干货:耐着性子阅读:相信肯定是会有收获 ...