【问题标题】:Java keytool doesn't like OpenSSL CSRJava keytool 不喜欢 OpenSSL CSR
【发布时间】:2017-12-30 02:30:31
【问题描述】:

我正在尝试使用 OpenSSL 创建自签名 SSL 证书,然后将该证书添加到 JKS 文件(Java 密钥库)中,以便我可以让基于 Jetty 的 Web 服务将该自签名证书提供给 HTTP 客户端通过 HTTPS。

我创建了 OpenSSL 自签名证书:

openssl req -x509 -newkey rsa:4096 -keyout mykey-dev.pem -out mycsr-dev.pem -days 3650

然后我创建了 JKS:

keytool -alias myorg -keyalg RSA -keystore myapp.jks -keysize 2048

相信我现在需要将 CSR (mycsr-dev.pem) 导入 JKS:

keytool -importcert -trustcacerts -file mycsr-dev.pem -alias myorg -keystore myapp.jks

这会产生以下错误:

keytool error: java.lang.Exception: Public keys in reply and keystore don't match

知道问题出在哪里吗?

【问题讨论】:

  • 好吧,您使用 -genkey 创建了一个密钥对,然后将一个不相关的密钥导入到同一个别名中。跳过 genkey 步骤。
  • 谢谢@JamesKPolk (+1) - 请看我上面的编辑...这是你的建议吗?
  • 跳过整个命令。
  • 那行得通@JamesKPolk (+1) - 如果你愿意,如果你在下面添加一个简单的 1-liner 答案来解释为什么第二个命令是不必要的 + 有问题的,我很乐意给你绿色检查!
  • (1) 您创建了密钥和证书,而不是 CSR;它们是不同的东西。 openssl req -new单独创建CSR,不能作为证书使用; openssl req -new -x509 创建一个不是 CSR 的证书。 (2) 你根本不需要 OpenSSL;只是keytool -genkey[pair](您错误地从您的 Q 中删除)会自动生成一个密钥和一个自签名证书。对于 TLS 服务器,在“名字和姓氏”提示中指定 FQDN,或使用 -dname CN=FQDN

标签: java keytool self-signed jks


【解决方案1】:

出现问题是因为keytool genkey -alias myorg ... 创建了一个密钥对,而openssl req 命令也创建了一个不相关的密钥对。因此,尝试将 openssl req 命令中的证书导入 myorg 别名下的 JKS 密钥库会导致两个不同的公钥之间发生冲突。如果您打算将受信任的证书导入密钥库,则只需在所需别名下进行导入,无需提前使用 keytool genkey ... 创建别名。

【讨论】:

  • OP 想要一个服务器,它需要 Java PrivateKeyEntry 中的密钥和证书,而不是受信任的证书。
  • @dave_thompson_085 从问题中看不清楚。
  • 谢谢@JamesKPolk (+1) - 只是好奇,mycsr-dev.pem 是“公钥”,mykey-dev.pem 是“私钥”吗?
  • mycsr-dev.pem 是包含公钥的证书,mykey-dev.pem 是私钥。
【解决方案2】:

openssl 创建 PEM 格式文件,而 keytool 将 jks 格式。

这是将证书从 pem 转换为 jks 的方法:

cat cert_public_key.pem cert_private_key.pem | openssl pkcs12 -export -out cert.p12

keytool -importkeystore -srckeystore cert.p12 -srcstoretype pkcs12 -destkeystore cert.jks

【讨论】:

  • 其实keytool和JCE以及包括Jetty在内的很多Java程序都支持JKS和PKCS12。通过 j8,它 默认 为 JKS,但 j9 将默认更改为 PKCS12。
猜你喜欢
  • 2011-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-11
  • 1970-01-01
  • 2018-05-27
  • 2022-08-03
  • 2022-12-13
相关资源
最近更新 更多