1. ホーム
  2. php

[解決済み] SSL 操作に失敗(コード 1:DH キーが小さすぎる)。

2022-02-16 12:16:01

質問

データベースであるGoogle Cloud SQLにSSLで接続しています。この機能を実現するためにmysqliドライバが少し変更されていますが、codeigniter 3.0を使用してそうしています。

数ヶ月間、うまくいっています。しかし ただ がこの警告を返すようになりました。

Message: mysqli::real_connect(): SSL operation failed with code 1. OpenSSL Error messages: error:14082174:SSL routines:SSL3_CHECK_CERT_AND_ALGORITHM:dh key too small

想定しているのは DH Key is too small が主な問題なのですが、その意味が全くわかりません。Diffie-Hellmanの鍵交換と、"key too small"というメッセージでググってみましたが、あまりヒットしませんね。

これは、サーバーの鍵が改ざんされたサインなのでしょうか?最終更新日を確認したところ、最近の異常なアクセスはありませんでした。

私のサーバーがPHPのバージョンアップをしたとか、サーバーの設定が変わったとかで、壊れたのかもしれませんが、他に原因がないかを確認したかったのです。

この件に関する洞察/読み物をありがとうございました。

どのように解決するのですか?

<ブロッククオート
... error:14082174:SSL routines:SSL3_CHECK_CERT_AND_ALGORITHM:dh key too small

気になるエラー番号は、OpenSSLエラー0x14082174です。

SSL3_CHECK_CERT_AND_ALGORITHM は通常、エクスポートグレードの暗号を有効にしたときに表示されます。Logjam(下記参照)により、非エクスポートグレードのネゴシエーションで再び表示されることがあります。


<ブロッククオート

DH Key is too smallが主な問題だと思うのですが、その意味が全くわかりません。Diffie-Hellmanの鍵交換と、"key too small"というメッセージでググってみたのですが、あまりヒットしませんでした。

その原因は、最近の ログジャムアタック 論文より 不完全な前方秘匿。ディフィー・ヘルマンが実際にどのように失敗するか .

2048ビット以上のDiffie-Hellmanグループを使用する必要があります。また ない 512ビットまたは1024ビットのDiffie-Hellmanグループを使用していること。

最初に確認するのは、暗号リストの文字列です。似たようなものであるはずです。

"HIGH:!aNULL:!MD5:!RC4"

これは、輸出グレードの暗号を避け、最新の暗号を使用するものです。しかし、DHコールバックが弱い/小さいフィールドサイズを使用していないことも確認する必要があります。そのためには、サーバーの設定を確認する必要があります。


この問題を解決するために、一部の人々は kRSA . kRSA はキー 輸送 スキーム、キーではありません 合意 スキームを使用します。RSA鍵転送スキームは前方秘匿を提供しないため、通常、その使用は推奨されない。実際、TLS 1.3では削除される予定である。

としか言いようがない。 通常、推奨されません。 なぜなら、保護されるデータに依存するからです。もし、一般公開されているファイルのダウンロードを保護するためにSSL/TLSを使用しているなら、おそらく使用しても問題ないでしょう。あなたのウェブサイトにログインがある場合、パスワードは(一般にダウンロード可能なファイルとは異なり)秘密のデータであるため、それを使用するのは少し危険でしょう。

キートランスポートを回避し、それらを渡すために Qualsys SSLラボ を使用して、Web サーバーの設定と前方秘匿のテストを行います。

"HIGH:!aNULL:!kRSA:!MD5:!RC4"

Apacheの設定ファイルでは、次のようになります。

# cat /etc/httpd/conf.d/ssl.conf | grep SSLCipherSuite
# SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLCipherSuite HIGH:!aNULL:!kRSA:!MD5:!RC4


思い出すのは wget 論文発表のかなり前から小集団を拒否していた。あなたのサイトの良いテストケースになるかもしれませんね。

また、改良された sslscan このテストでは、さまざまなことをテストします。これも良いQAツールになるかもしれませんね。