尝试获取证书时出错:在钥匙串中找不到指定的项目


110

我在对应用程序进行代码签名时遇到问题,因此我从钥匙串中删除了所有密钥。然后,我去了证书助理=>证书颁发机构请求证书(为新证书创建CSR)。

所以输入我的电子邮件地址,这就是我得到的:

在钥匙串中找不到指定的项目。

我究竟做错了什么?

PS当我尝试创建证书颁发机构时,出现相同的错误。


1
我遇到了同样的错误。请您详细说明答案或知道如何做的人
Iducool

9
重新启动KeyChain Access对我
有用

1
对于那些为了第二个签名目的(例如installer+ application)重用私钥的用户,请参见下面的@ toland-hon的手动步骤,这些步骤在命令行上使用OpenSSL来解决有问题的Keychain Access应用程序。重用私钥用于次要目的时,将用户定向到的下Certificate一部分的以下步骤Keychain Access仍然无效。通过手动CSR openssl是可行的解决方法。
tresf

Answers:


300

我解决了 在申请证书之前,请确保您位于“证书”部分,并且选择了“ Apple Worldwide Developer Relations证书颁发机构”。


7
你是英雄。当所有其他答案都不能解决问题时,我正在拔头发。
BFeher

23
哦,天哪,Apple WTF?谢谢约翰!
MattD

2
疯了吧。P什么falooda ???严重,需要有一些用户友好的警告或消息::(。
阿迪勒·苏姆罗

2
我没有考虑这个答案,因为我认为这很疯狂。但实际上可以。苹果生态系统中有些零散的地方简直是疯了:)
Alex

2
这为我解决了。选择我的旧私钥无效,也没有选择密钥。多么晦涩...

46

除非您在钥匙串中同时拥有用于身份的私钥公钥,否则钥匙串访问将不允许您向具有“ 标识 ” ... 的证书颁发机构请求证书。当我只有私钥而不是相应的公钥时,我遇到了这个问题。

您可以根据私钥中所述的步骤从私钥创建公钥并将其导入到您的钥匙串中。我可以从私钥中恢复它吗?

导入公钥后,便可以使用带有“ identity ......”命令的来自证书颁发机构的“请求证书”,而无需触发。在钥匙串错误中找不到指定的项目


没错,如何在没有公钥的情况下创建证书:)
onmyway133

29

申请证书之前,请转到“ 证书 ”部分并选择“ Apple全球开发者关系证书颁发机构 ” 。

在此处输入图片说明


21

您(可能是无意中)要求“钥匙串访问” 使用现有密钥生成证书签名请求。如果在进入“ 钥匙串访问 - 证书助手”菜单时选择了一个密钥,则显示的选项将针对该选定的密钥。

在钥匙串中选择一个非钥匙物品(例如保存的密码),然后再次转到“ 钥匙串访问 - 证书助手”以正常生成CSR。


似乎OS X现在默认为现在选择的第一项。如果在生成此代码时仅选择其他钥匙串(即系统),则应该可以解决此问题。
James Parker

真是可恶,我永远不会客气。谈论不良的UI设计...
d512,18年

9

甚至我都遇到了这个问题。我选择解决了这个All Items,而不是KeysCategories窗格,然后试图创建证书。

试试这个,它肯定会工作。


最好重新启动
knight2016年

7

这发生在我身上,我注意到用于创建证书申请的菜单选项已从

向证书颁发机构请求证书...

向证书颁发机构索取带有“我的名字”的证书...

检查此菜单选项

我在工作中的域上,因此我注销了,以另一个用户身份登录并退出,然后再次登录。之后,菜单按预期出现,该错误消失了


4
这是钥匙串访问的功能。如果您在进入此菜单时选择了密钥,它将提供使用该密钥创建证书签名请求的方法。(在这种情况下,选项与右键单击键时的选项相同。)注销将取消选择键。
Phil Calvin

您不必先注销再登录。只是退出钥匙串并再次打开它,而不选择列表中的任何条目,而是转到菜单进行请求
M.Shuaib Imran 2014年

7

我的目标是使用我现有的私钥创建CSR(证书签名请求),以提交给Apple以生成新的iPhone Distribution证书。我确保“证书”是左侧的选定类别。我尝试右键单击我的私钥,然后单击“ 使用导入的私钥向证书颁发机构请求证书”,当我尝试保存它时会出现以下错误。

在钥匙串中找不到指定的项目。

通过文件菜单时,我也遇到相同的错误:钥匙串访问 > 证书助手

我从其他Internet来源收集到的信息是,只有在您从工具本地创建了密钥的情况下,如果导入了私钥,“密钥链访问”不允许您创建新的CSR。

我最终要做的是导出私钥,并使用openssl生成新的CSR,Apple接受了它,现在引用了新的Imported Private Key。

导出私钥

  1. 右键单击私钥
  2. 出口
  3. 确保选择了p12文件格式
  4. 保存
  5. 输入密码(可选)
  6. 允许访问导出密钥
  7. 打开终端并转到导出的目录
  8. 从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,等待证书生成,然后再安装它。导入新生成的证书后,您会看到它会引用上面导出的旧证书。


同样的问题。想要保留相同的私钥(即最初用于,developerID_installer.cer但想再次用于developerID_application.cer)。Apple的说明是不好的,因为它们会迫使您使用越野车Keychain Access或更糟糕的XCode。我偶然地偶然发现了上述解决方案。感谢您的支持,因为这正是我最终要做的。
tresf

4

我有同样的问题。我可以创建CSR,然后无法创建它,并且出现相同的错误。

然后我可以搜索并找到可能的解决方案,但不能解决。

一段时间我可以解决它。

我通过第一时间CSR进行钥匙串访问,所以我的钥匙串访问是锁定的。

打开>钥匙串访问>钥匙串访问显​​示顶部“单击以解锁系统钥匙串”

单击该按钮并解锁系统钥匙串,然后创建CSR文件,然后单击“未收到此错误”。


2

在钥匙串中选择私钥将发生此问题。“在钥匙串中找不到指定的项目”选择公钥时解决。“您的证书请求已在磁盘上创建。”


1

好的,显示的名称将显示您在“钥匙串”主窗口中突出显示的项目(如果您在此处选择其他项目,则菜单项也会随之更改)。如果您转到左侧的“类别”部分,然后选择“我的证书”,然后返回“证书助手”菜单项,它看起来/作用就像您惯常使用的那样。希望这可以帮助!



0

如果在生成新的CSR时已在钥匙串中选择了任何私钥,则它将提示您有关该钥匙的信息。只需确保选择了任何非私钥项即可生成新的CSR,这对于创建新的CSR很有用。

例如,在钥匙串工具“公钥”或任何未与私钥对齐的现有证书中保持选中状态。现在,遵循“从证书颁发机构请求证书”流程。



-14

解决了!必须将“用户证书”更改为“代码签名”。


将“用户证书”更改为“代码签名”是什么意思?
user500 2013年

是的,请问,我也遇到了同样的问题,“代码签名”是什么意思?那是什么?
Habitante
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.