在iOS开发的过程中, 必然需要制作证书,开发者证书,发布证书,但是在制作他们的第一步都是先生成一个CSR文件
那么到底CSR是什么东西呢?可以参考下面官方介绍
简单来说,CSR就是Certificate Signing Request的缩写,是从证书颁发机构生成证书时,需要的一串加密的文本信息,也是从证书颁发机构获取的,用文本工具打开,可以看到他是一串
—–BEGIN CERTIFICATE REQUEST—–
MIICkDCCAXgCAQAwSzEkMCIGCSqGSIb3DQEJARYVc2FuZmVuZ2ZseWluZ0AxMjYu
Y29tMRYwFAYDVQQDDA1zYW5mZW5nZmx5aW5nMQswCQYDVQQGEwJDTjCCASIwDQYJ
KoZIhvcNAQEBBQADggEPADCCAQoCggEBALeOs2Pd65KYGUFXio02QrUyFUSImQ2L
NEFNpEga6yWPEsXG+yYAsd4dx5DOkWx4Iiybsdg0v8uB1b9d0GfjIzRiMyhTM24V
cgODmijKT2DnxvagDZH9+ikErvlvcb4KtLKNoRYOJ8T0Oc80ibamQULuTRyrixlQ
u8G5gIul3MxQpv+ZmJO3DcamqnfKkrQNVw3D9ALUuk7o8W1V8vgea/LzsVMm5JzC
mxq1zOnnxpV/7KHdVtrK+rRMOqr2tdTnKtgK9yNVqCjWDgJmmvVtJ1uvmmDWevjg
S985hH2niif9zlim4c3tjceGkAaYpuGM+24kQnYvYt6JvNh9XTkeVh0CAwEAAaAA
MA0GCSqGSIb3DQEBCwUAA4IBAQAId4jHlTMryJHTDhL/cgSb5rRIYJC7wJ2fvGfu
Jwlr6HZplZBZGDr271lYcEJ56VDyXzLEx1ea/4f+I3IFowS6AlcvY2YrJwY7KET+
R98GDsprBdgg2RpSxpJPe4rF1rWDjUdPJUCFi+AczQ0aA6ckIzYDhlQpXieTXKPd
nrG0cV6vsJBMQ6oAo8eZxDl7HV29sK/RJRa1k0q3GpzyhpKmPTfiA0ig4H4zHE3n
TUtwa9EOBuhxcGItZRypdZTOX1Rrp5XFyxdtUgx9eKsg0sys/SGgrTtU+YAiorr1
TH4jOKnTy1lATjIn3MQhoBQhPl6WxmtVcWx2+pLklYEW+M+Y
—–END CERTIFICATE REQUEST—–
这样的内容,它里面实际包含了一些你的个人信息,比如email,国家等,但是最重要的是,他包含了你签名要用的公钥信息,而对应的私钥则存储在你的mac上,打开KeyChain Asscess –login –Keys 发现里面多了两组信息,就是公钥私钥
采用如下命令,可以将CSR进行解密:
openssl req -in CertificateSigningRequest.certSigningRequest -noout -text
可以得到如下内容:
|
|
可以看到他的全部内容,公钥以及其他内容
当然我们也可以使用如下命令
openssl req -new -keyout server.key -out server.csr
生成CSR和私钥key,有了这两个之后,就可以通过CA机构生成证书。
ps:
证书相关的有太多的格式,.pem, .cer, .key, .p12 等等,为什么这么多呢?
首先要知道,X.509是常见通用的证书格式。所有的证书都符合为Public Key Infrastructure (PKI) 制定的 ITU-T X509 国际标准。
.cer/.crt是用于存放证书,它是2进制形式存放的,不含私钥。
.pem跟crt/cer的区别是它以Ascii来表示。
pfx/p12用于存放个人证书/私钥,他通常包含保护密码,2进制方式
der,cer文件一般是二进制格式的,只放证书,不含私钥
pem文件一般是文本格式的,可以放证书或者私钥,或者两者都有
key文件,pem如果只含私钥的话,一般用.key扩展名,而且可以有密码保护
p12文件是二进制格式,同时含私钥和证书,通常有保护密码
后续开发需要,证书及配置文件的制作,请参考
Provisioning Profile文件包含了上述所有内容:证书,App ID,设备,后缀名为.mobileprovision。
>
一个Provisioning Profile对应一个Explicit App ID或Wildcard App ID。
Provisioning Profile决定Xcode用哪个证书(公钥)/私钥组合(Key Pair/Signing Identity)来签名应用程序(Signing Product),将在应用程序打包时嵌入到.ipa包里。
Provisioning Profile把这些信息全部打包在一起,方便我们在调试和发布程序打包时使用。这样,只要在不同的情况下选择不同的Provisioning Profile文件就可以了。
Provisioning Profile也分为Development和Distribution两类,有效期同Certificate一样。
Development版本的ProvisioningProfile用于开发调试,Distribution版本的ProvisioningProfile主要用于提交App Store审核,其不指定开发测试的Devices。
xcode开发时,需在XcodeTarget->Build Settings->Code Signing->Provisioning Profile下配置对应的描述文件(Provisioning Profiles),然后在Code Signing Identity下拉可选择Identities from Profile “…”(即Provisioning Profile中包含的Certificates)。
在XcodeTarget->Build Settings->Code Signing->Provisioning Profile可选择“Automatic”,xcode会根据该Target的“Bundle identifier”选择默认的配置文件及证书。