我遇到了Secure Grizzly HttpServer的问题,我的方法加载了密钥库文件和信任库文件,她为自签名的证书工作。
private static SSLContextConfigurator getSSLContextConfigurator() {
final SSLContextConfigurator sslContextConfigurator = new SSLContextConfigurator();
sslContextConfigurator.setKeyStoreFile("keystore_server");
sslContextConfigurator.setKeyStorePass("password");
sslContextConfigurator.setTrustStoreFile("truststore_server");
sslContextConfigurator.setTrustStorePass("password");
return sslContextConfigurator;
}
但是当我想将CA签名的证书导入密钥库或信任库时,例如:
keytool -genkey -keyalg RSA -keystore ./keystore_client -alias clientKey
keytool -export -alias clientKey -rfc -keystore ./keystore_client > ./client.cert
keytool -import -alias clientCert -file ./client.cert -keystore ./truststore_server
keytool -import certsigned.pem -keystore ./keystore_server -alias serverKey
keytool -export -alias serverKey -rfc -keystore ./keystore_server > ./server.cert
keytool -import -alias serverCert -file ./server.cert -keystore ./truststore_client
我的应用程序启动没有错误,但是当我使用curl / browser时出现客户端错误:
curl: (35) Unknown SSL protocol error in connection to domain.com:8090
Browser: ERR_CONNECTION_CLOSED
如何正确导入使用keytool签名的证书?
修改
我的证书已在网站上使用,因此他无效。
答案 0 :(得分:1)
答案 1 :(得分:0)
我解决了我的问题!实际上,将证书链+私钥转换为PKCS#12文件格式,并将PKCS#12文件转换为Java密钥库格式。 并且密钥库文件工作! 更多信息here。
openssl pkcs12 -export -out keystore.pkcs12 -in fullchain.pem -inkey privkey.pem
keytool -importkeystore -srckeystore keystore.pkcs12 -srcstoretype PKCS12 -destkeystore keystore_server
rm keystore.pkcs12