我使用openssl创建了一个rootKey.pem,client.key:
$openssl genrsa -aes256 -out client.key 2048
$ sudo openssl req -config openssl.cnf -key rootKey.pem -new -
x509 -sha256 -extensions v3_ca -out root.crt -days 3650
$sudo openssl x509 -req -extfile openssl.cnf -extensions
v3_intermediate_ca -CA root.crt -CAkey rootKey.pem -
CAserial -days 1825 -in intermediateCsr.pem -out
intermediate.crt
我也使用openssl创建了一个链证书(即ROOT证书+中间证书)。
从client.key上的keyPair.getPrivate()获取privateKey;当我做 :
keyStore.setKeyEntry("alias",privateKey,passphrase,chain-trust);
我明白了:
java.security.KeyStoreException: BCFKS KeyStore exception storing
private key: java.lang.IllegalArgumentException: RSA keys do not
have the same modulus
是什么原因..以及如何解决?
这篇文章带我去解决方案:
https://knowledge.digicert.com/solution/SO16899.html
使用以下命令将client.key保存在密钥库中:
keyStore.setKeyEntry(“alias”,Key key,Char [] password,Certificate [] chain);
关键是client.key的私有部分,
Certificate []链应该是(client.crt + intermediate.crt + root.crt),连接在一起。
错误地我只使用连接在一起的(intermediate.crt + root.crt)。