私の同僚と私は、Firefox 3.0.6 を使って、私たちが開発している Java 1.6.0___11 のウェブアプリケーションにアクセスするのに問題があります'。 セッションが始まって1分から30分の間はすべてうまくいきますが、最終的には接続に失敗し、次のエラーが表示されます。
セキュアな接続に失敗しました。
10.x.x.xへの接続中にエラーが発生しました
。
相手と安全な通信ができません: 共通の暗号化アルゴリズムがありません`。
(エラーコード: ssl_error_no_cypher_overlap)
.
IEは正常に動作します。 FirefoxはWindowsとFedoraの両方でエラーを吐くので、問題はOSに縛られていないようです。 Java EEアプリケーションは、Tomcat 6.0.16サーバー上で動作しています。 すべてのページは、mod_nssを備えたApache 2.2.8 HTTPサーバーを経由して、TLS 1.0を使用して暗号化されています。
私たちのApacheサーバーは、SSL 3.0接続を拒否するように設定されています。 1つの仮説として、FirefoxがSSL 3.0接続を確立しようとしているのかもしれません...しかし、なぜでしょうか?
ググってみたところ、以下のようなことを試してみましたが、うまくいきませんでした。
Firefox 2.xを使用する(2.xでは動作したが、3.xでは動作しなかったという報告もある)。
SSL2を有効にする
SSL3を無効にする
OCSPを無効にする (ツール > オプション > 詳細 > 暗号化 > 有効化)
クライアントコンピュータのアンチウィルス/ファイアウォールが443番ポート(httpsポート)をブロックまたはスキャンしていないことを確認すること。
何か思い当たることはありますか?
www.tpsynergy.comでサーバーの証明書を更新しているときに、同じ問題が発生しました。 . 新しいサーバー証明書をインポートしてtomcatを再起動した後、取得していたエラーはERR_SSL_VERSION_OR_CIPHER_MISMATCHでした。多くの調査の後、このリンクhttps://www.sslshopper.com/certificate-key-matcher.htmlを使用して、csr(証明書署名リクエストと実際の証明書)を比較しました。 どちらも一致しませんでした。 そこで、新しいcsrを作成し、新しい証明書を取得して、同じものをインストールしました。 動いた。
したがって、プロセスの完全なステップはです。
1。 証明書がインストールされる同じサーバーから、CSRを作成します。
keytool -keysize 2048 -genkey -alias tomcat -keyalg RSA -keystore tpsynergy.keystore。 (必要に応じてドメイン名を変更します)。
これを作成するときに、名と姓が要求されます。 名前を付けるのではなく、ドメイン名を使用してください。 たとえば、www.tpsynergy.comとして提供しました。
2.keytool -certreq -keyalg RSA -alias tomcat -file csr.csr -keystore tpsynergy.keystore。
これにより、同じフォルダにcsr.csrファイルが作成されます。 この内容をgodaddyサイトにコピーして、新しい証明書を作成します。
3。 ダウンロードした証明書zipファイルには3つのファイルがあります。 gd_bundle-g2-g1.crt。 gdig2.crt。 yourractualcert.crt。
4。 godaddyリポジトリからroot cert gdroot-g2.crtをダウンロードする必要があります。
5。 これらすべてのファイルを、CSRファイルを作成した場所とキーストアファイルが配置されている同じディレクトリにコピーします。
6。 次に、以下のコマンドを1つずつ実行して、証明書をキーストアにインポートします。
keytool -import -trustcacerts -alias root -file gd_bundle-g2-g1.crt -keystore tpsynergy.keystore。
keytool -import -trustcacerts -alias root2 -file gdroot-g2.crt -keystore tpsynergy.keystore。
keytool -import -trustcacerts -alias中間-ファイルgdig2.crt -keystore tpsynergy.keystore。
keytool -import -trustcacerts -alias tomcat -file yourdomainfile.crt -keystore tpsynergy.keystore。
7。 confフォルダ内のserver.xmlファイルにこのエントリがあることを確認します。
<。!-ポート8443でSSL HTTP / 1.1コネクタを定義します。
このコネクタは、JSSE構成を使用します。APRを使用する場合、
コネクタはOpenSSLスタイルの構成を使用する必要があります。
APRドキュメントで説明->。
<コネクタport = "8443" protocol = "HTTP / 1.1" SSLEnabled = "true"。
maxThreads = "150" scheme = "https" secure = "true"。
clientAuth = "false" sslProtocol = "TLS"。
keystoreFile = "/ usr / share / tomcat7 / webapps / productioncerts / tpsynergy.keystore"。
keystorePass = "msrの作成中に使用されたmypasswordsameas"。
/>。
8。 tomcatを再起動します。
あなたが試したこととエラーメッセージを考えると、これはTLS/SSLのバージョンというより、使用された正確な暗号アルゴリズムに関係していると言えると思います。ひょっとしてSun以外のJREを使っていたり、別のベンダーのセキュリティ実装を使っていたりしませんか?もし可能であれば、異なるJRE/OSでサーバーをテストしてみてください。そうでなければ、[Wireshark][1] ('tcp.port == 443'のフィルタを使って)で何が起こっているかを見ることができるかもしれません。
[1]: http://www.wireshark.org/ "Wireshark"。
WikipediaでSSLネゴシエーションのプロセスを確認すると、最初にClientHelloメッセージとServerHelloメッセージがブラウザとサーバーの間で送信されることがわかります。
ClientHelloで提供される暗号がサーバー上に重複するアイテムを持っている場合にのみ、ServerHelloメッセージには、両側がサポートする暗号が含まれます。 それ以外の場合、一般的なサイファーがないため、SSL接続は開始されません。
問題を解決するには、ブラウザで一生懸命試すのではなく、(通常はOSレベルで)暗号をインストールする必要があります(通常、ブラウザはOSに依存しています)。 私はWindowsとIEに精通していますが、LinuxとFirefoxについてはほとんど知りません。そのため、何が悪いのかを指摘することしかできませんが、ソリューションを提供することはできません。
まず最初に確認するのは、mod_nssの設定です。それはあなたのものであり、世界に一つもないからです :-) Firefoxやmod_nss自体に何か大きなバグがあるのなら、今頃はgoogleで調べていることでしょう。SSL3を無効にしたり、いろいろと適当にいじっているのも怪しいです。
I'd back track to a very vanilla mod_nss config and see if that works.それから、問題を再現できるまで、現在の設定に向かって系統的に変更してください。その音からすると、エラーの原因はmod_nssのcipher spec configと関連するプロトコルネゴシエーションのどこかにあるようです。つまり、SSLv3をオフにしようとして、うっかり何かを変えてしまったのかもしれません(ちなみに、なぜSSL3を無効にするのでしょうか? 通常はV2を無効にするのでしょうか?)。
もう一つ確認すべきことは、あなたが最新のmod_nssを使用していて、そのバグが既知でないことです。セッションを開始できたのに後で失敗したという事実は興味深いです。それはおそらく、セッションを再ネゴシエートしようとして、その時点で暗号のネゴシエートに失敗していることを示唆しています。つまり、対称的な暗号が原因かもしれません。または、単にあなたのバージョンのmodarette_nssの実装バグで、何らかの形でプロトコルを破損している可能性もあります。
もう一つの考えは、これは野生の推測ですが、ブラウザがSSLv3を無効にする前にSSLv3で交渉したセッションを再開しようとしていて、V3をオフにしたときにそのセッションを再開しようとすると何かが壊れるか、mod_nssが正しく実装されていないだけだと思います。
あなたの説明を誤解していない限り、Java/tomcatはSSLハンドシェイク/プロトコルには関与していないので、余計なお世話のような気がします。
私にとってうまくいったのは私です。
1。 about:configに行きました。 2。 検索ボックスに「セキュリティ」と入力しました。 3。 返されたすべてのエントリをデフォルトに設定します。 4。 検索ボックスで「ssl」と入力しました。 5。 返されたすべての結果をデフォルトに設定します。 6。 ssl2を有効にしました。 7。 ssl3を無効にしました。 8。 Firefoxを再起動しました。
Firefoxの再起動に関する注意:Firefoxを閉じた直後に起動すると、 多くの場合、ファイルアクセスの問題があり、 places.sqlite を削除する必要があります。 C:\ WINDOWS \ Application Data \ Mozilla \ Firefox \ Profiles \ n18091xv.default の places.sqlite-journal 。 これは私に私の歴史を失う原因となり、ブックマークはそうでなければなりません。 これが発生するたびにバックアップから復元されます。 5分から10分くらい待ちます。 この面倒を避けるためにより多く。
WinMeでFirefox v3.5.1を実行します。