![](/img/trans.png)
[英]SSL : CSR file created with openSSL and installing with keytool
[英]Java keytool doesn't like OpenSSL CSR
我正在嘗試使用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
知道是什么問題嗎?
openssl創建PEM格式文件,而keytool將jks格式。
這是將證書從pem轉換為jks的方法:
貓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 genkey -alias myorg ...
創建了一個密鑰對,而openssl req
命令也創建了一個不相關的密鑰對。 因此,嘗試將openssl req
命令中的cert導入myorg
別名下的JKS密鑰庫中會導致兩個不同的公共密鑰之間發生沖突。 如果您打算將受信任的證書導入密鑰庫,則只需在所需別名下進行導入,則無需使用keytool genkey ...
提前創建別名。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.