java - Rest API SSL 带有 ca 签名的证书

标签 java rest ssl grizzly

我的 Secure Grizzly HttpServer 有问题,我的方法加载了 keystore 文件和信任库文件,她为自签名证书工作。

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 签名的证书导入 keystore 或信任库时,例如:

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 .

关于java - Rest API SSL 带有 ca 签名的证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48486617/

相关文章:

java - 如何将 URL 中的 xml 数据保存到文件中?

java - 更改数据库后更新 ListView

java - 动态禁用 hbm2ddl.auto?

java - Spring Controller 组合而不是继承

rest - 如何在 Golang 中处理纯文本 HTTP Get 响应?

rest - 带有 JAXRS 应用程序的 ReSTLet 中的 HTTP 基本身份验证?

java - eclipse 库有问题

android - OkHttp:SSLPeerUnverifiedException 无法找到签署 X.509 证书的可信证书

security - WKWebView 中的公钥固定

google-app-engine - SSL pinning with *.appspot.com : How can I know when Google is going to change their public key?