【问题标题】:How to create CSR without any Attributes/Requested Extensions within request - Keytool如何在请求中创建没有任何属性/请求扩展的 CSR - Keytool
【发布时间】:2019-07-19 03:33:11
【问题描述】:

有没有办法使用 java keyTool 生成证书签名请求,其中不包含任何属性,例如“请求的扩展”或任何相关的扩展嵌入信息?

我是使用 keytool 的新手,并且正在与一位希望我们生成没有属性信息的 CSR 的客户打交道。

一些背景信息是我的私钥在我的密钥库中过期,这导致我生成一个新的密钥库,它与以前一样具有相同的“PrivateKeyEntry”别名(当然这是一个示例,我已经更改了密钥库“PrivateKeyEntry”的名称和别名):

keytool -keystore example-prod-client-ssl.jks -genkey -alias example-prod-client-ssl -storetype JKS -keysize 2048 -keyalg RSA -sigalg SHA1WithRSA

一旦生成 new 密钥库,我还需要删除一些过期的“trustedCertEntry”别名,因此我从 old 密钥库导出所有有效的“trustedCertEntry”证书并导入他们进入新的。

现在,此时我需要生成 CSR 并让客户签名,因为当您生成新的密钥库和“PrivateKeyEntry”时,它是自签名的。

我可以使用以下命令轻松生成 CSR:

keytool -certreq -alias example-prod-client-ssl -file certreq_v2-02112019.csr -keystore example-prod-client-ssl.jks

但是,当我使用在线工具解析 CSR 时,我可以看到它在请求中包含一些 Attribute 信息,即“Requested Extensions”:

所以我的主要问题是,我怎样才能使属性部分为空?

过去,我在 2014 年看到我们必须与客户执行相同的过程,当我在 old 密钥库上执行 CSR(作为测试)时,我仍然具有以下属性与我的 CSR 请求完全相同。但客户不希望包含这些内容,因为这会导致他们一方出错。

此外,发送给客户的 old 密钥库的最后一个 CSR 请求(不是由我执行 - 于 2014 年完成,但我有此 CSR 文件的副本)确实不包含此属性信息,仅具有十六进制值“a0:00”:

所以,我相信它与我的 CSR 请求无关,而不是 new 密钥库创建本身,因为当我在 old 密钥库上生成 CSR 时(我仍然可以使用) 它还包含这些属性请求的扩展。

我玩弄了在我的“-certreq”命令中添加“-ext”来尝试抑制或插入一个空的属性部分(因为我相信如果我不使用“-ext”参数“-certreq”命令将默认,这就是我遇到当前问题的原因),但我不成功。

【问题讨论】:

    标签: certificate x509certificate keytool csr


    【解决方案1】:

    如果您使用 Java JDK 1.6 或更低版本,则可以解决此问题。我当前的 VM 正在运行 JDK 10.0.2,因此它会自动填充 CSR 中的属性请求扩展 X509V3 SubjectKeyIdentifier。我刚刚将密钥库文件复制到使用 JDK 1.6 的旧 VM 中,CSR 正在生成我想要的方式,没有任何问题。

    【讨论】:

      猜你喜欢
      • 2019-07-14
      • 1970-01-01
      • 1970-01-01
      • 2018-04-29
      • 1970-01-01
      • 2020-01-30
      • 2021-04-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多