web-dev-qa-db-ja.com

Tomcat 8でSSLが機能しない

Tomcat 8用にSSL(https)を設定しようとしていますが、以下の手順を実行しましたが、まだ機能していません

1)を使用してキーストアファイルを作成します

keytool -genkey -alias myservername -keyalg RSA

2)以下のように生成されたCSR

keytool -certreq -alias myservername -file C:\Tomcat_ssl\local_machine\test.csr -keystore C:\Tomcat_ssl\local_machine\test.keystore

3)次に、証明書を生成し、以下のようにチェーン証明書と証明書をインポートしました

keytool -import -alias root -keystore C:\Tomcat_ssl\local_machine\test.keystore -trustcacerts -file C:\Tomcat_ssl\local_machine\srv_chain.cer

keytool -import -alias myservername -keystore C:\Tomcat_ssl\local_machine\test.keystore -file C:\Tomcat_ssl\local_machine\srv_main.cer

4)最後に、Tomcat server.xmlの変更を以下のように行いました

<Connector port="443" protocol="org.Apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="C:\Tomcat_ssl\local_machine\test.keystore" keystorePass="123" keystoreAlias="myservername"/>

Tomcatを再起動したが、動作せず、画面の下に表示される

Error when accessing Tomcat https

Tomcatログではエラーは表示されません。また、接続でcipherタグを保持する、Enabled TLS 1,2,3、httpsポートなどの変更は無効です。

また、httpsポート443をテストしましたが、netstatを実行するとlistenとして表示されます。これが機能しない理由

TomcatでSSLデバッグを有効にした後にログを追加しました

http-nio-443-exec-5, fatal error: 10: General SSLEngine problem
javax.net.ssl.SSLHandshakeException: SSLv2Hello is disabled
http-nio-443-exec-5, SEND TLSv1.2 ALERT:  fatal, description = unexpected_message
http-nio-443-exec-5, WRITE: TLSv1.2 Alert, length = 2
http-nio-443-exec-5, fatal: engine already closed.  Rethrowing javax.net.ssl.SSLHandshakeException: SSLv2Hello is disabled
http-nio-443-exec-5, called closeOutbound()
http-nio-443-exec-5, closeOutboundInternal()
[Raw write]: length = 7
10
JavaGeek

Java 8を使用しているため、 デフォルトTLS 1.2

スクリーンショットを見ると、IE 11でクライアントTLSが有効になっていません。デフォルトでは IE 11 has SSL 3.0, TLS 1.0, 1.1, 1.2有効。

protocols マトリックスが表示される場合、接続が成功しない理由がわかります。

したがって、IE 11 SSL TLS設定を更新するか、別のブラウザを使用して確認してください。

4

私はずっと前に同じ問題を抱えていました。

Miソリューションは(ここで従うステップはCAの指示に依存し、CAサイトは通常、証明書を正しく生成する方法の完全な指示を持っています):

  1. 証明書を再度作成しますが、次のコマンド(キーサイズ2048)を使用します(名前と姓がサイト名の例と同じであることを確認してください:yourhost.com:

keytool -genkey -alias yourhost.com -keyalg RSA -keysize 2048 -keystore servername.jks

  1. Generate de csr

keytool -certreq -alias yourhost.com -file mycsr.txt -keystore servername.jks

  1. 証明書をインストールする

keytool -import -trustcacerts -alias yourhost.com -file file-from-your-ca.p7b -keystore servername.jks

Server.xmlコネクターに次の構成を配置します(注:sslProtocolの可能な値は、使用しているjvmによって異なります。Java 8 Java 8 ssl値

<Connector port="443" protocol="org.Apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false"  keystoreFile="/home/myserver/ssl/servername.jks" keystorePass="yourpass" keystoreAlias="yourhost.com" sslProtocol="TLSv1.2"  />

Tomcatを再起動します

このサイトでセキュアコネクタを構成する方法の例は他にもあります。 Secure Tomcat

3
Daniel C.

コネクタを追加して、JSSEの使用を強制してみてください。

sslImplementationName="org.Apache.Tomcat.util.net.jsse.JSSEImplementation"

何らかの理由で、APRを検出し、動作していないOpenSSLを使用しようとしています。 この回答 を参照してください。

0
vladimir83

現在、私は同様の問題に直面していますが、私たちの問題はserver.xml内のTomcat構成に関係しているという強い疑いを抱いています。私も、ポートでサービスがリッスンしていることを確認しましたが、ログファイルにはあま​​り有用なメッセージがありません。

(SSLを使用した安全なTomcat)を実行するために実行している同僚から言われました

   <Connector port="443" scheme="https" server="Secure Web Server"
              minSpareThreads="25" allowTrace="false" keystoreType="JKS"
              keystoreFile="C:\Tomcat\conf\aSecureTomcat.jks" keystorePass="yourPassword"  
              connectionTimeout="20000"
              protocol="org.Apache.coyote.http11.Http11NioProtocol" 
              secure="true" clientAuth="false" sslProtocol="TLS" 
              sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2" 
              useServerCipherSuitesOrder="true" 
              ciphers="TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256"/> 

最小構成についてはまだわかりませんが、重要な部分はコードスニペットの最後の5行かもしれません。 Tomcatの構成はどのように見えますか?

0
B--rian

元のserver.xmlを変更するだけです:sslProtocol = TLSv1.2バージョン番号を含めます。以前に同じエラーがありました。

0
senadorbarrago

Tomcatは、SSLの2つの異なる実装を使用できます。

Javaランタイム(1.4以降)デフォルトでOpenSSLエンジンを使用するAPR実装の一部として提供されるJSSE実装。正確な構成の詳細は、使用されている実装によって異なります。コネクタは、generic protocol = "HTTP/1.1"を指定することにより、Tomcatが使用する実装が自動的に選択されます。インストールでAPRを使用する場合(つまり、Tomcatネイティブライブラリをインストールした場合)、 Java JSSE実装。

設定の詳細については、 https://Tomcat.Apache.org/Tomcat-8.0-doc/ssl-howto.html を参照してください。私は単に手順に従うだけでうまくいきます。

最も重要なのは、Tomcatに問題があるかどうかです。エラーはブラウザから発生する場合があります。

  • IE以外のブラウザを試しましたか?
  • IEのどのバージョンを使用していますか?
  • Windows 7またはWindows 8?

IEのみで問題に直面している場合は、TLS 1.0、TLS 1.1、およびTLS 1.2を有効にする推奨修正プログラムとともに、詳細設定でSSL 2.0およびSSL 3.0も確認してください。

0
Kambiz