使用HTTPUrlConnection的Tomcat SSL连接器配置

时间:2018-08-23 14:07:47

标签: java security tomcat ssl tls1.2

嗨,我的tomcat容器配置如下:

<Connector 
    port=...
    connectionTimeout=...
    maxThreads=...
    scheme="https"
    secure="true"
    SSLEnabled="true"
    keystoreFile="path to keystore"
    keystorePass="pass"
    truststoreFile="path to truststore"
    truststorePass="pass to truststore"
    keyAlias=...
    clientAuth=...
    sslProtocol="TLSv1.2"
    protocol="HTTP/1.1" />

我在同一雄猫上同时部署了客户端和服务器战争。因此,我希望在ssl握手客户端时,它将从密钥库(在连接器上配置)接收服务器证书,并将在信任库(在连接器上配置)前面对其进行验证。

我的客户代码如下:

HttpURLConnection connection = null;
    StringBuilder response = new StringBuilder();
    try {
        URL url = new URL(requestURL);
        connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("POST");
        connection.setDoOutput(true);
        connection.setRequestProperty("Content-Type", "application/json");
        connection.setConnectTimeout(10000);
        connection.setReadTimeout(10000);

        String requestMessage = "some request";
        try (OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream())) {
            out.write(requestMessage);
        }

问题是我失败了SSLHandshake PKIX异常,这通常发生在由于某种原因(证书无效,信任库无效或没有适当的CA)而无法通过验证的情况下

在调试之后,我看到我有一些配置了信任库的默认ssl上下文(这不是我的信任库)。

我的问题:   1。。如何实现客户端以使其从tomcat连接器获得信任存储...   2。。我看到的是Java标准艺术品信托商店吗?从哪里得到的?

我实际上可以在HTTP S UrlConnection上设置自定义 SSLContext ,如下所示:

HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());

但是,我不想手动提供信任库,但我想使用tomcat连接器中的那个。

0 个答案:

没有答案