1

私の質問が冗長に思える場合は申し訳ありません。Stackoverflow に関する多くの Q&A と、Tomcat、Java クライアント、OS の TLSv1.1+ の有効化に関するその他のリソースの束を見つけましたが、それでも Win10/Tomcat7/Java7 のローカル環境で有効にできません。 . おそらく、私は何か間違っているだけです。

明確にするために、私はTomcatにデプロイされたJava Webアプリを持っています。この Web アプリは、https 経由でリモート サービスにリクエストを送信します。以前、これらのリモート サービスは TLSv1.0 をサポートしていましたが、私のアプリは正常に動作していました。現在、これらのリモート サービスは TLSv1.1+ のみをサポートしており、エラーが表示されます。実際には、次のような単純な HTML ページの応答が返されます。

To access this website, update your web browser or upgrade your operating system to support TLSv1.1 or TLSv1.2

さまざまな方法で Web アプリケーションの TLSv1.1+ アウトバウンド通信サポートを有効にしようとしましたが、それでもうまくいきません。だから、私は試しました:

set CATALINA_OPTS=-Dhttps.protocols=TLSv1.1,TLSv1.2

set CATALINA_OPTS=-Ddeployment.security.TLSv1.1=true -Ddeployment.security.TLSv1.2=true

と同じものJAVA_OPTS。システム環境変数に追加することと、Tomcatを起動する前にcmdに設定することの両方を試しました。また、Control Panel\Programs\Java Control Panel Advanced Tab で TLSv1.1 と TLSv1.2 のサポートを設定しました。

ここに私のenvに関する詳細があります:

Windows バージョン:

Microsoft Windows [Version 10.0.14393]

Tomcat 起動ログ (最初の n 行):

c:\Program Files\apache-tomcat-7.0.72\bin>catalina.bat run
Using CATALINA_BASE:   "C:\Program Files\apache-tomcat-7.0.72"
Using CATALINA_HOME:   "C:\Program Files\apache-tomcat-7.0.72"
Using CATALINA_TMPDIR: "C:\Program Files\apache-tomcat-7.0.72\temp"
Using CATALINA_OPTS:    "-Dhttps.protocols=TLSv1.1,TLSv1.2 -Xms1024m -Xmx2048m -XX:MaxPermSize=256m"
Using JRE_HOME:        "C:\Program Files\Java\jdk1.7.0_80\jre"
Using CLASSPATH:       "C:\Program Files\apache-tomcat-7.0.72\bin\bootstrap.jar;C:\Program Files\apache-tomcat-7.0.72\bin\tomcat-juli.jar"
Jan 12, 2017 3:40:54 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server version:        Apache Tomcat/7.0.72
Jan 12, 2017 3:40:54 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server built:          Sep 14 2016 12:12:26 UTC
Jan 12, 2017 3:40:54 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server number:         7.0.72.0
Jan 12, 2017 3:40:54 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Name:               Windows 8.1
Jan 12, 2017 3:40:54 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Version:            6.3
Jan 12, 2017 3:40:54 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Architecture:          amd64
Jan 12, 2017 3:40:54 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Java Home:             C:\Program Files\Java\jdk1.7.0_80\jre
Jan 12, 2017 3:40:54 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Version:           1.7.0_80-b15
Jan 12, 2017 3:40:54 PM org.apache.catalina.startup.VersionLoggerListener log
...

私は自分が間違っていることを理解できません。

更新しました:

Tomcat の JRE_HOME を JAVA 8 に切り替えると、問題なく動作します

今のところ、このコードを追加してApache HttpClientを構成することで修正しました。

SSLContext sslContext = null;
        try {
            sslContext = SSLContexts.custom().useTLS().build();
        } catch (KeyManagementException | NoSuchAlgorithmException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

        SSLConnectionSocketFactory f = new SSLConnectionSocketFactory(sslContext, new String[] { "TLSv1.1", "TLSv1.2" }, null,
                new AllowAllHostnameVerifier());

        httpclient = HttpClients.custom().setSSLSocketFactory(f).build();

しかし、それでもコードを変更しないとできないのでしょうか? どうにかしてTomcat Javaまたはシステムを構成することによって?JAVA 8 では、コードを変更しなくてもすべてが機能します。

4

1 に答える 1