2012-03-17 107 views
13

Apache TomcatがTLS v1.2プロトコルをサポートしているかどうかを知りたい。私はこれについて書類を見つけられませんでした!ありがとう!TomcatはTLS v1.2をサポートしていますか?

+0

TomcatはTLSをまったくサポートしていません。これは、Java(JSSE経由)またはそれをサポートするOpenSSLです。サポートするTLSのバージョンは、バージョンによって異なります。あなたの質問は不調です。 – EJP

答えて

11

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

Apacheをプロキシとして使用している場合は、Apacheと基本となるOpenSSLのドキュメントを参照してください。

いくつかのリンク:

http://docs.oracle.com/javase/7/docs/technotes/guides/security/enhancements-7.html(Java SEの7のセキュリティ強化)

http://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html

+0

ありがとうございます!私はついにJSSE設定を使ってTLS v1.2をTomcatで入手しました。 – observer

+1

あなたは私があなたのために変更したものを教えてください、私はsslProtocol = "TLSv1.1"をコネクタで指定しようとしましたが、それは動作しませんでした。 – Ashish

2

http://tomcat.apache.org/tomcat-5.5-doc/ssl-howto.html私もTLSv1.1に、以下に述べたようにsslProtocolをアップグレードするために探していましたJava6とJava7のリンク

Java6 http://docs.oracle.com/javase/6/docs/technotes/guides/security/SunProviders.html のSSLContextはJava6のではサポートJava7 http://docs.oracle.com/javase/7/docs/technotes/guides/security/SunProviders.html

はSSL、TLSv1のとJava7 SSL、TLSv1が、TLSv1.1とTLSv1.2でサポートされています。

tomcatでTLSv1.1またはTLSv1.2を有効にするには、Java7にアップグレードし、tomcatのserver.xmlにあるConnectorのsslProtocolを変更してください。

8

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

Tomcatネイティブ(APR)で使用する場合、Tomcatは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でサポートされるようです。

9

私は、TLSv1.1または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サポートをセットアップできます。

多くの参考文献から、私は多くの組み合わせをテストしました。最後に、TLSv1.2のみを受け入れるようにTomcat 7を強制する1が見つかりました。

1)Cで:タッチするのに必要な2箇所\の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、(Java8によって供給されて)それ以外の場合はTomcatは以前のSSLプロトコルをサポートするためにフォールバックします。

は、Tomcat Cを起動

:\ apacheの-tomcatに-7.0.64-64bit \ビンの\ startup.batを

我々はJAVA_OPTSは、Tomcatの起動ログに表示され見ることができます。

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要求に応えることを証明しています。

関連する問題