Rest API SSL 证书由 ca 签名
Rest API SSL With certs signed by ca
我的 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 签名的证书?
编辑
我的证书已经在网站上运行了,所以他没有失效。
Curl 不使用系统 CA 存储。您要么需要告诉 curl 您的 CA 证书在哪里使用
--cacert [file]
命令行选项或使用提到的其他选项之一 here。
我的问题解决了!其实就是把证书链+私钥转成PKCS#12文件格式,把PKCS#12文件转成Javakeystore格式。
和密钥库文件工作!
更多信息 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
我的 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 签名的证书?
编辑
我的证书已经在网站上运行了,所以他没有失效。
Curl 不使用系统 CA 存储。您要么需要告诉 curl 您的 CA 证书在哪里使用
--cacert [file]
命令行选项或使用提到的其他选项之一 here。
我的问题解决了!其实就是把证书链+私钥转成PKCS#12文件格式,把PKCS#12文件转成Javakeystore格式。 和密钥库文件工作! 更多信息 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