Java keytool不喜欢OpenSSL CSR

问题描述 投票:0回答:2

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

我创建了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

知道问题是什么吗?

java keytool self-signed jks
2个回答
1
投票

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


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.