我的目标是使用我现有的私钥创建CSR(证书签名请求),以提交给Apple以生成新的iPhone Distribution证书。我确保“证书”是左侧的选定类别。我尝试右键单击我的私钥,然后单击“ 使用导入的私钥向证书颁发机构请求证书”,当我尝试保存它时会出现以下错误。
在钥匙串中找不到指定的项目。
通过文件菜单时,我也遇到相同的错误:钥匙串访问 > 证书助手
我从其他Internet来源收集到的信息是,只有在您从工具本地创建了密钥的情况下,如果导入了私钥,“密钥链访问”不允许您创建新的CSR。
我最终要做的是导出私钥,并使用openssl生成新的CSR,Apple接受了它,现在引用了新的Imported Private Key。
导出私钥
- 右键单击私钥
- 出口
- 确保选择了p12文件格式
- 保存
- 输入密码(可选)
- 允许访问导出密钥
- 打开终端并转到导出的目录
- 从p12容器中提取密钥
请注意,.pem私钥不再受密码保护)
$ openssl pkcs12 -in Certificates.p12 -out Certificates.pem -nodes
Enter Import Password: ********************
MAC verified OK
使用导出的私钥创建新的CSR
$ openssl req -out Certificates.csr -key Certificates.pem -new
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:.
State or Province Name (full name) [Some-State]:.
Locality Name (eg, city) []:.
Organization Name (eg, company) [Internet Widgits Pty Ltd]:.
Organizational Unit Name (eg, section) []:.
Common Name (e.g. server FQDN or YOUR name) []:John Doe Dev Key
Email Address []:thon@example.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
需要注意的几件事:
- 输入。当您希望该字段为空白时,否则默认值将包括方括号[]中的所有内容。
- 公用名(CN)应该是您的私钥名称(例如John Doe Dev Key)
- 电子邮件地址应为您的电子邮件地址(例如thon@example.com)
- 其他都应该空白
验证您的CSR
$ openssl req -noout -text -in Certificates.csr
Certificate Request:
Data:
Version: 0 (0x0)
Subject: CN=John Doe Dev Key/emailAddress=thon@example.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (2048 bit)
Modulus (2048 bit):
…
Exponent: 65537 (0x10001)
Attributes:
a0:00
Signature Algorithm: sha1WithRSAEncryption
…
您应该关心的是“ 主题”行,并确认它是正确的。
现在,您需要做的就是将其提交给Apple,等待证书生成,然后再安装它。导入新生成的证书后,您会看到它会引用上面导出的旧证书。