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を再起動したが、動作せず、画面の下に表示される
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
私はずっと前に同じ問題を抱えていました。
Miソリューションは(ここで従うステップはCAの指示に依存し、CAサイトは通常、証明書を正しく生成する方法の完全な指示を持っています):
keytool -genkey -alias yourhost.com -keyalg RSA -keysize 2048 -keystore servername.jks
keytool -certreq -alias yourhost.com -file mycsr.txt -keystore servername.jks
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
コネクタを追加して、JSSEの使用を強制してみてください。
sslImplementationName="org.Apache.Tomcat.util.net.jsse.JSSEImplementation"
何らかの理由で、APRを検出し、動作していないOpenSSLを使用しようとしています。 この回答 を参照してください。
現在、私は同様の問題に直面していますが、私たちの問題は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の構成はどのように見えますか?
元のserver.xmlを変更するだけです:sslProtocol = TLSv1.2バージョン番号を含めます。以前に同じエラーがありました。
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のみで問題に直面している場合は、TLS 1.0、TLS 1.1、およびTLS 1.2を有効にする推奨修正プログラムとともに、詳細設定でSSL 2.0およびSSL 3.0も確認してください。