【发布时间】: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