【问题标题】:Error when trying to obtain a certificate: The specified item could not be found in the keychain尝试获取证书时出错:在钥匙串中找不到指定的项目
【发布时间】:2013-05-30 20:18:31
【问题描述】:

我在对我的应用程序进行代码设计时遇到问题,因此我从钥匙串中删除了所有钥匙。然后我去了 Certificate Assistant => 向证书颁发机构申请证书(为新证书创建 CSR)。

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

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

我做错了什么?

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

【问题讨论】:

  • 我遇到了同样的错误。请您详细说明您的答案或知道如何做的人
  • 重启 KeyChain Access 对我有用 :)
  • 对于那些将私钥重新用于第二次签名目的的人(例如installer + application),请参阅@toland-hon 的以下手动步骤,其中在命令行上使用 OpenSSL 来解决越野车Keychain Access 应用程序。以下将用户引导至Keychain AccessCertificate 部分的步骤在将私钥用于次要目的时仍然不起作用。通过openssl 手动进行 CSR 是一种可行的解决方法。

标签: ios codesign


【解决方案1】:

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

【讨论】:

  • 你是英雄。当所有其他答案都没有解决问题时,我正在拔头发。
  • 天哪,Apple WTF?谢谢约翰!
  • 这太疯狂了。 :( :P 什么是falooda???说真的,需要一些用户友好的警报或消息。
  • 我没有考虑这个答案,因为我认为这很疯狂。但它确实有效。苹果生态系统中有一些松散的部分简直是疯了:)
  • 这为我解决了。选择我的旧私钥不起作用,也没有选择密钥。多么晦涩……
【解决方案2】:

转到“证书”部分并选择“Apple Worldwide Developer Relations Certification Authority申请证书之前。

【讨论】:

  • 谢谢!我的 wwdr 已过期。这有助于我解决问题
【解决方案3】:

钥匙串访问不会让您向具有“身份”的证书颁发机构请求证书...,除非您同时拥有私钥和 em> 钥匙串中 identity 的公钥。当我只有私钥而没有相应的公钥时,我遇到了这个问题。

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

一旦我导入了公钥,我就可以使用 Request a Certificate from a Certificate Authority With "identity"... 命令而不触发 在钥匙串中找不到指定的项目错误。

【讨论】:

  • 你是对的,没有公钥怎么能创建证书:)
【解决方案4】:

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

在您的钥匙串中选择一个非关键项(如已保存的密码),然后再次进入钥匙串访问 - 证书助手以正常生成 CSR。

【讨论】:

  • 看起来 OS X 现在默认为现在选择的第一个项目。如果您在生成它时只是选择不同的钥匙串(即系统),它应该可以解决问题。
  • 天哪,我绝不会做客的。谈论糟糕的 UI 设计...
  • 你是英雄。这应该是正确的答案。
【解决方案5】:

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

试试这个,一定会成功的。

【讨论】:

  • 最好重启
【解决方案6】:

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

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

使用“我的名字”向证书颁发机构请求证书...

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

【讨论】:

  • 这是钥匙串访问的一个功能。如果您在进入此菜单时选择了一个密钥,它将提供使用该密钥来创建证书签名请求。 (在这种情况下,选项与右键单击某个键时的选项相同。)注销将取消选择该键。
  • 您不必先注销再登录。只需退出钥匙串并再次打开它现在不要选择列表中的任何条目并转到菜单请求
【解决方案7】:

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

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

我在浏览文件菜单时也遇到了同样的错误:钥匙串访问 > 证书助手

我从其他互联网来源收集到的是,如果您导入了私钥,钥匙串访问不允许您创建新的 CSR,只有当您从该工具本地创建密钥时。

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

导出私钥

  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 []:

需要注意的几点:

  • 输入 。当您希望该字段为空白时,或者默认值将包括括号 [] 中的任何内容。
  • Common 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。我无意中偶然发现了上述解决方案。支持你的,因为这正是我最终所做的。
【解决方案8】:

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

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

有时间我可以解决它。

我的钥匙串访问通过第一次箱子 CSR.so 我的钥匙串访问被锁定。

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

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

【讨论】:

    【解决方案9】:

    在撤销我拥有的所有证书后,我发现问题出在我的 yubikey 上。它妨碍了签署应用程序。删除后,问题解决了。

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

    【讨论】:

    • 谢谢!这也是我的问题。对于大多数人来说,这可能不是问题,但任何拥有 Yubikey 的人都应该尝试将其拔出并重建。
    【解决方案10】:

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

    【讨论】:

      【解决方案11】:

      好的,显示的名称显示您在钥匙串主窗口中突出显示的项目(如果您在此处选择不同的项目,您还会看到菜单项随之更改)。 例如,如果您转到左侧的类别部分并选择我的证书,然后返回证书助手菜单项,它看起来/就像您习惯的那样。希望这会有所帮助!

      【讨论】:

        【解决方案12】:

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

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

        【讨论】:

          【解决方案13】:

          如果您在生成新的 CSR 时选择了钥匙串中的任何私钥,那么它将提示您参考该密钥。只需确保您选择了任何非私钥项来生成新的 CSR,这对于创建新的 CSR 很有用。

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

          【讨论】:

            【解决方案14】:

            对我来说,问题是一个证书搞砸了。

            我没有必要删除我的所有证书。

            识别坏证书:

            1. 从您的钥匙串中选择登录从类别中选择证书
            2. 查找任何带有蓝色 + 的 Apple 证书
            3. 双击证书。
            4. 扩展信任 如果它搞砸了,那么“使用此证书时”将与蓝色 + 一起设置为“始终信任”

            修复坏证书:

            1. 只需将其设置为“使用系统默认值”并关闭即可。
            2. 你会得到一个弹出窗口。输入您的密码以更新设置。
            3. 关闭钥匙串。
            4. 回到您的项目,清理并运行。
            5. 问题应该已经消失了。如果这不起作用,请返回 Keychain 并仔细检查是否有任何其他 Apple 证书设置为始终信任并重复该过程。

            【讨论】:

              【解决方案15】:

              对我来说,我试图退出从expo build 生成的 IPA 文件,所以我跑了

              codesign -f -s "iPhone Distribution: Company Certificate" --resource-rules Payload/MyApp.app/ResourceRules.plist  Payload/MyApp.app
              

              然后就显示出来了

              error: The specified item could not be found in the keychain.
              

              所以我去了我添加(上传)证书的钥匙串,然后用钥匙串访问中证书的名称替换了“iPhone Distribution: Company Certificate”。检查附加的图像

              【讨论】:

                【解决方案16】:

                我在我的 mac 中遇到了同样的问题,我只是转到系统偏好设置,MySQL,选择 MySQL 版本,初始化数据库,输入密码,好的。然后它的工作

                【讨论】:

                  【解决方案17】:

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

                  【讨论】:

                  • 将“用户证书”更改为“代码签名”是什么意思?
                  • 是的,我也遇到了同样的问题,“代码签名”是什么意思?那在哪里?
                  猜你喜欢
                  • 2021-10-06
                  • 1970-01-01
                  • 2023-04-10
                  • 1970-01-01
                  • 2020-03-23
                  • 2019-10-08
                  • 1970-01-01
                  • 2017-04-06
                  • 1970-01-01
                  相关资源
                  最近更新 更多