web-dev-qa-db-ja.com

TomcatはTLS v1.2をサポートしていますか?

Apache TomcatがTLS v1.2プロトコルをサポートしているかどうか知りたいです。これに関するドキュメントは見つかりませんでした!ありがとう!

15
observer

TLSバージョン1.2は、JSSE実装のOracle JDKバージョン7でサポートされています。 Tomcatは基礎となるSSLライブラリとしてJSSEを使用するため、JDKバージョン1.7以降でサポートされる必要があります。 Tomcatで有効になっているSSL暗号スイートも確認してください。

Apacheをプロキシとして使用している場合は、Apacheおよび基礎となるOpenSSLドキュメントを確認してください。

いくつかのリンク:

http://docs.Oracle.com/javase/7/docs/technotes/guides/security/enhancements-7.html (Java SE 7セキュリティ拡張機能)

http://Tomcat.Apache.org/Tomcat-5.5-doc/ssl-howto.html

http://Tomcat.Apache.org/Tomcat-7.0-doc/ssl-howto.html

12
Maarten Bodewes

同様の使用例があります。これは、Tomcat 7がTLSv1.2やSSLv3などの以前のSSLプロトコルにフォールバックせずに、TLSv1.2のみを厳密に使用できるようにすることです。以下の手順は、TomcatがTLSv1.2をサポートできるようにする方法を示します。

私はC:\ Apache-Tomcat-7.0.64-64bitおよびC:\ Java64\jdk1.8.0_60を使用しています。

この指示に従ってください: https://Tomcat.Apache.org/Tomcat-7.0-doc/security-howto.html 。 Tomcatは、SSLサポートのセットアップが比較的簡単です。

多くの組み合わせをテストした多くの参考資料から、最終的にTomcat 7がTLSv1.2のみを受け入れるようにする1を見つけました。触れる必要がある2つの場所:

1)C:\ Apache-Tomcat-7.0.64-64bit\conf\server.xml

<Connector port="8443" 
 protocol="org.Apache.coyote.http11.Http11Protocol"
 maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
 keystoreFile="ssl/.keystore" keystorePass="changeit"
 clientAuth="false" sslProtocol="SSL" sslEnabledProtocols="TLSv1.2" />

どこ

keystoreFile =ローカルの自己署名トラストストア

org.Apache.coyote.http11.Http11Protocol = JSSE BIO実装。

Org.Apache.coyote.http11.Http11AprProtocolは使用しません。opensslを使用しているためです。基礎となるopensslは、以前のSSLプロトコルをサポートするためにフォールバックします。

2)Tomcatを起動するときに、次の環境パラメーターを有効にします。

set Java_HOME=C:\Java64\jdk1.8.0_60
set PATH=%PATH%;C:\Java64\jdk1.8.0_60\bin
set CATALINA_HOME=C:\Apache-Tomcat-7.0.64-64bit
set Java_OPTS=-Djdk.tls.client.protocols="TLSv1.2" -Dsun.security.ssl.allowUnsafeRenegotiation=false -Dhttps.protocols="TLSv1.2"

Java_OPTSの制限が必要です。そうでない場合、Tomcat(Java8を搭載)はフォールバックして以前のSSLプロトコルをサポートします。

Tomcat C:\ Apache-Tomcat-7.0.64-64bit\bin\startup.batを起動します

Tomcat_startupログにJava_OPTSが表示されます。

Oct 16, 2015 4:10:17 PM org.Apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djdk.tls.client.protocols=TLSv1.2
Oct 16, 2015 4:10:17 PM org.Apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dsun.security.ssl.allowUnsafeRenegotiation=false
Oct 16, 2015 4:10:17 PM org.Apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dhttps.protocols=TLSv1.2

次に、opensslコマンドを使用してセットアップを確認します。最初にlocalhost:8443をTLSv1.1プロトコルで接続します。 Tomcatはサーバー証明書での応答を拒否します。

C:\OpenSSL-Win32\bin>openssl s_client -connect localhost:8443 -tls1_1
Loading 'screen' into random state - done
CONNECTED(000001C0)
5372:error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number:.\ssl\s3_pkt.c:362:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 5 bytes and written 0 bytes

Localhost:8443をTLSv1.2プロトコルで接続すると、TomcatはServerHelloに証明書で応答します。

C:\OpenSSL-Win32\bin>openssl s_client -connect localhost:8443 -tls1_2
Loading 'screen' into random state - done
CONNECTED(000001C0)
depth=1 C = US, ST = Washington, L = Seattle, O = getaCert - www.getacert.com
verify error:num=19:self signed certificate in certificate chain
---
Certificate chain
0 s:/C=SG/ST=SG/L=Singapore/O=Xxxx/OU=Development/CN=Myself
   i:/C=US/ST=Washington/L=Seattle/O=getaCert - www.getacert.com
1 s:/C=US/ST=Washington/L=Seattle/O=getaCert - www.getacert.com
   i:/C=US/ST=Washington/L=Seattle/O=getaCert - www.getacert.com
---
Server certificate
-----BEGIN CERTIFICATE-----
(ignored)
-----END CERTIFICATE-----
subject=/C=SG/ST=SG/L=Singapore/O=Xxxx/OU=Development/CN=Myself
issuer=/C=US/ST=Washington/L=Seattle/O=getaCert - www.getacert.com
---
No client certificate CA names sent
Peer signing digest: SHA512
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 2367 bytes and written 443 bytes

これは、TomcatがTLSv1.2リクエストのみに厳密に応答することを証明しています。

17
oraclesoon

他の人が述べたように、TomcatはJDK 7+のJSSEを介してTLSv1.2をサポートします。

Tomcatは、Tomcat Native(APR)で使用する場合、TLSv1.1またはTLSv1.2をサポートしません。 https://issues.Apache.org/bugzilla/show_bug.cgi?id=53952 を参照してください。

更新:TLSv1.2はTomcat Native 1.1.32およびTomcat 8.0.15/7.0.57で最終的にサポートされるようです。

8
Mark Woon

また、sslProtocolをTLSv1.1にアップグレードしたいと考えていました。また、以下のJava6およびJava7のリンクで述べたように

Java6 http://docs.Oracle.com/javase/6/docs/technotes/guides/security/SunProviders.html Java7 http://docs.Oracle.com/javase/ 7/docs/technotes/guides/security/SunProviders.html

Java6でサポートされているSSLContextはSSL、TLSv1であり、Java7ではSSL、TLSv1、TLSv1.1およびTLSv1.2がサポートされています。

そのため、TomcatでTLSv1.1またはTLSv1.2を有効にするには、Java7にアップグレードし、Tomcatのserver.xmlのConnectorでsslProtocolを変更するだけです。

2
Ashish