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

问题描述 投票:83回答:14

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

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

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

我究竟做错了什么?

附:当我尝试创建证书颁发机构时,我得到了同样的错误。

ios codesign
14个回答
242
投票

我解决了确保您在“证书”部分,并在申请证书之前选择“Apple全球开发者关系证书颁发机构”。


1
投票

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


1
投票

在撤销我拥有的每个证书后,我发现问题出在我的yubikey上。它阻碍了对应用程序的签名。删除后,问题解决了。

这个论坛帖子帮助了我:https://forums.developer.apple.com/thread/106938


0
投票

如果您在生成新CSR时选择了钥匙串中的任何私钥,则会提示您引用该密钥。只需确保您已选择任何非私钥项目来生成新的CSR,这对于创建新的CSR非常有用。

例如,在钥匙串工具“公钥”中选择保留,或者没有与其对齐的私钥的任何现有证书。现在按照“证书颁发机构的请求证书”流程进


0
投票

以下链接解决了我的问题。 https://forums.developer.apple.com/thread/72863

在我的情况下,yubikey一直连接到我的Mac。删除后,问题自动解决。


-14
投票

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


44
投票

Keychain Access不允许您从证书颁发机构申请证书具有“身份”...除非您的钥匙串中同时拥有私钥和公钥。当我只拥有私钥而不是相应的公钥时,我遇到了这个问题。

您可以使用私钥创建公钥,并使用I lost my public key. Can I recover it from a private key?中描述的过程将其导入到您的钥匙串中

一旦我导入了公钥,我就可以使用“证书颁发机构的证书申请”和“身份”...命令而不触发在钥匙串错误中找不到指定的项目。


19
投票

您(可能是偶然)要求Keychain Access使用现有密钥生成证书签名请求。如果在进入Keychain Access - Certificate Assistant菜单时选择了某个键,则显示的选项将针对该选定键。

在钥匙串中选择一个非关键项目(如保存的密码),然后再次转到Keychain Access - Certificate Assistant以正常生成CSR。


9
投票

即使我遇到了这个问题。我通过在All Items窗格中选择Keys而不是Categories然后尝试创建证书来解决这个问题。

试试这个,它肯定会奏效。


9
投票

截至2019年2月:

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

enter image description here


7
投票

这发生在我身上我发现创建证书请求的菜单选项已经改变了

从证书颁发机构申请证书......

通过“我的名字”向证书颁发机构申请证书......

我在工作中的域名,所以我注销,登录和注销另一个用户,然后再次登录。之后,菜单按预期显示,此错误消失了


6
投票

我的目标是使用我现有的私钥创建CSR(证书签名请求),以提交给Apple以生成新的iPhone分发证书。我确保证书是左侧选定的类别。我试图右键单击我的私钥并单击从具有导入私钥的证书颁发机构申请证书,并在我尝试保存时出现以下错误。

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

当我浏览文件菜单时,我也遇到了同样的错误:Keychain Access> Certificate Assistant

我从其他互联网资源中收集到的是,只有在您从工具本地创建密钥时,如果您导入了私钥,Keychain Access不允许您创建新的CSR。

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

Exporting the 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

Creating new CSR with exported private key

$ 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 []:[email protected]

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)
  • 电子邮件地址应为您的电子邮件地址(例如[email protected]
  • 其他一切都应该是空白的

Verify your CSR

$ openssl req -noout -text -in Certificates.csr
Certificate Request:
    Data:
        Version: 0 (0x0)
        Subject: CN=John Doe Dev Key/[email protected]
        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,等待生成证书,然后安装它。导入新生成的证书后,您将看到它将引用您上面导出的旧证书。


3
投票

我有同样的问题。我可以创建CSR然后不创建它,同样的错误正在得到。

那么我可以搜索并找到解决方案,但不能解决。

有一段时间我可以解决它。

我的钥匙串访问通过frist time crate CSR.so我的钥匙串访问是锁定。

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

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


1
投票

好的,显示的名称显示您在Keychain主窗口中突出显示的项目(如果您在此处选择其他项目,您还会看到菜单项随之更改)。如果您转到左侧的类别部分并选择我的证书,并返回证书辅助菜单项,它看起来/行为就像您习惯的那样。希望这可以帮助!

© www.soinside.com 2019 - 2024. All rights reserved.