署名された証明書が必要なTomcatサーバーがあります。を使用してキーを生成しました
keytool -genkey ....
cSRを生成し、会社の管理者に送信しました。
署名された証明書と証明書チェーンを含むCERファイルが返されました。
Keytoolを使用して、ルート証明書、中間証明書、および署名付き証明書をキーストアにインストールしました。
しかし、サーバーで証明書を使用してブラウザーに接続すると、ChromeでERR_SSL_VERSION_OR_CIPHER_MISMATCHエラーが発生します。
これは、opensslを使用してデバッグするときに得られるものです。
$ openssl s_client -connect localhost:18443 -debug -tls1 -msg
CONNECTED(00000003)0x7fecbbc1b4d0 [0x7fecbc019000]への書き込み(100バイト=> 100(0x64))0000-16 03 01 00 5f 01 00 00-5b 03 01 5b 1c 08 e9 8a ...._... [.. [.... 0010-69 73 dd 18 9f 58 98 08-b3 23 dd 76 89 3c b8 7b is ... X ...#。v。<。{0020-3e aa ea 61 d8 88 0f eb- af 52 45 00 00 2e 00 39> .. a ..... RE .... 9 0030-00 38 00 35 00 16 00 13-00 0a 00 33 00 32 00 2f .8.5 ...... .3.2。/ 0040-00 9a 00 99 00 96 00 05-00 04 00 15 00 12 00 09 ................ 0050-00 14 00 11 00 08 00 06- 00 03 00 ff 01 00 00 04 ................ 0060-00 23
。#0064-TLS 1.0ハンドシェイク[長さ005f]、ClientHello 01 00 00 5b 03 01 5b 1c 08 e9 8a 69 73 dd 18 9f 58 98 08 b3 23 dd 76 89 3c b8 7b 3e aa ea 61 d8 88 0f eb af 52 45 00 00 2e 00 39 00 38 00 35 00 16 00 13 00 0a 00 33 00 32 00 2f 00 9a 00 99 00 96 00 05 00 04 00 15 00 12 00 09 00 14 00 11 00 08 00 06 00 03 00 ff 01 00 00 04 00 23 00 00 0x7fecbbc1b4d0から読み取り[0x7fecbc014600](5バイト=> 5(0x5))0000-15 03 01 00 02 ..... 0x7fecbbc1b4d0から読み取り[2x7fecbc014605](2バイト=> 2(0x2))0000- 02 28
。(<<< TLS 1.0 Alert [length 0002]、fatal handshake_failure 02 28 24316:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:/BuildRoot/Library/Caches/com.Apple.xbs /Sources/OpenSSL098/OpenSSL098-64.50.7/src/ssl/s3_pkt.c:1145:SSLアラート番号40 24316:error:1409E0E5:SSLルーチン:SSL3_WRITE_BYTES:sslハンドシェイクエラー:/BuildRoot/Library/Caches/com.Apple .xbs/Sources/OpenSSL098/OpenSSL098-64.50.7/src/ssl/s3_pkt.c:566:
私が間違っていることはありますか?
私はグーグルやスタックオーバーフローからあらゆるものを試しました。
keytool --list -keystore <yourkeystore>
を実行すると、PrivateKeyEntry
が返されます。
Tomcat, Aug 23, 2018, PrivateKeyEntry,
Certificate fingerprint (SHA-256): F2:BA:29:E...
署名された証明書と秘密鍵がある場合、それらをPKCS12キーストアにエクスポートし、それをJavaキーストアにインポートする必要があります。 。署名付き証明書は、キーストアにキーがないと機能しません。
#export to PKCS12, set password -> it has to be the same as the Java keystore password in the next step
openssl pkcs12 -export -name Tomcat -in cert.cer -inkey key.pem -out Tomcat.p12
#import the pkcs12 keystore. make sure, both passwords are the same
keytool -importkeystore -destkeystore Tomcat.keystore -srckeystore Tomcat.p12 -srcstoretype pkcs12 -alias Tomcat
あなたの問題に適しているかどうかはわかりませんが、おそらくこれで解決策に近づくでしょう:ERR_SSL_OBSOLETE_CIPHERなどの証明書に問題がある場合は、server.xmlのSSLコネクタにこれを追加できます
useCipherSuitesOrder="true"
ciphers="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_DSS_WITH_AES_128_GCM_SHA256,
TLS_DHE_DSS_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
TLS_DHE_DSS_WITH_AES_128_CBC_SHA256,TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,
TLS_DHE_DSS_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,
TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_GCM_SHA384,
TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256,
TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,
TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA,TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA,
TLS_SRP_SHA_WITH_AES_256_CBC_SHA,TLS_DHE_DSS_WITH_AES_256_CBC_SHA256,
TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA,TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA,
TLS_SRP_SHA_WITH_AES_128_CBC_SHA,TLS_DHE_DSS_WITH_AES_128_CBC_SHA,
TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA,TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA,
TLS_RSA_WITH_CAMELLIA_256_CBC_SHA,TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA,
TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA,TLS_RSA_WITH_CAMELLIA_128_CBC_SHA"
IntelliJ IDE内でTomcatの実行から切り替え、スタンドアロン実行用にセットアップした後、上記の回答は「sslまたは暗号の不一致」の原因を診断するのに役立ちました。
localhost以外のURL(myinitials.company.com)のキーストアをセットアップしましたが、- https:// localhost を介してそれにアクセスしようとしました。走ったらすぐにkeytool --list -keystore <yourkeystore>
、myinitials.company.com用にキーストアが設定されていることを示しました。私はそのホスト名に変更し、ERR_SSL_VERSION_OR_CIPHER_MISMATCHを取得しなくなりました。
これがこのページを見つけた誰かを助けることを願っています。