security find-identity 列出了一个身份,但我在 Keychain Access 中找不到该身份

Posted

技术标签:

【中文标题】security find-identity 列出了一个身份,但我在 Keychain Access 中找不到该身份【英文标题】:security find-identity lists an identity, but I can't find the identity in Keychain Access 【发布时间】:2018-09-28 19:55:13 【问题描述】:

我根据Apple's instructions 创建了一个带有certSigningRequest 文件的Apple 分发证书:

要手动生成证书,您需要证书签名 从 Mac 请求 (CSR) 文件。要创建 CSR 文件,请按照 下面的说明使用钥匙串访问创建一个。创建企业社会责任 文件。

在 Mac 上的 Applications 文件夹中,打开 Utilities 文件夹,然后 启动钥匙串访问。

在 Keychain Access 下拉菜单中,选择 Keychain Access > 证书助手 > 从证书请求证书 权威。

In the Certificate Information window, enter the following information:
    In the User Email Address field, enter your email address.
    In the Common Name field, create a name for your private key (e.g., John Doe Dev Key).
    The CA Email Address field should be left empty.
    In the "Request is" group, select the "Saved to disk" option.
Click Continue within Keychain Access to complete the CSR generating process.

我从 Apple 以 .cer 文件的形式下载了公钥。但是,现在,我在Keychain Access.app 中找不到证书+密钥对。在login Keychain 下选择 Certificates Category 时,我希望看到类似我的开发证书 + 密钥对。

我确实看到Keys 下列出的私钥与我的.certSigningRequest 中包含的名称相同,但通常我也可以在其下方看到一个证书,如下面的开发证书中所示:

我能够通过命令行找到身份

$ security find-identity
Policy: X.509 Basic
  Matching identities
  1) WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW "iPhone Developer: Heath Borders (XXXXXXXXXX)"
  2) YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY "iPhone Distribution: Heath Borders (ZZZZZZZZZZ)"
     2 identities found

  Valid identities only
  1) WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW "iPhone Developer: Heath Borders (XXXXXXXXXX)"
  2) YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY "iPhone Distribution: Heath Borders (ZZZZZZZZZZ)"
     2 identities found

但如果我在特定的钥匙串中搜索,我找不到它:

$ security list-keychains
    "/Users/hborders/Library/Keychains/login.keychain-db"
    "/Library/Keychains/System.keychain"
$ security find-identity /Users/hborders/Library/Keychains/login.keychain-db
    Policy: X.509 Basic
      Matching identities
      1) WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW "iPhone Developer: Heath Borders (XXXXXXXXXX)"
         1 identity found

      Valid identities only
      1) WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW "iPhone Developer: Heath Borders (XXXXXXXXXX)"
         1 identity found

$ security find-identity /Users/hborders/Library/Keychains//Library/Keychains/System.keychain
     0 valid identities found

我的证书在哪里?

【问题讨论】:

【参考方案1】:

由于某种原因,当我导入从 Apple 下载的 .cer 文件时,Keychain Access.app 将公钥导入System 钥匙串,将私钥导入我的login 钥匙串。因此,仅在 loginSystem 内搜索无法找到身份。只有两者的结合才能产生有效的身份。

我将公钥从System 钥匙串移到login 钥匙串中,现在一切正常。

【讨论】:

你在哪里能够区分钥匙串在哪里找到身份? 我澄清了我的回答。现在更有意义了吗? 我的意思是安全命令。通常我只能通过 ssh 访问我的 mac。 不,我无法使用security find-identity 确定公钥或私钥的钥匙串。但是,我怀疑您可以对私钥使用 security find-key,对单个钥匙串上的公钥使用 security find-certificate,这可能会让您确定来源。

以上是关于security find-identity 列出了一个身份,但我在 Keychain Access 中找不到该身份的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring Security 应用程序中列出 *all* 用户和 *all* 权限

列出本机JCE支持的Provider消息摘要算法公钥私钥算法

如何列出 Python 包的额外功能

如何列出 Oracle DB 中的所有上下文命名空间?

如何使用 Spring Security 获取当前用户的角色

我可以从 Spring Security Oauth 中检索访问令牌吗?