SSLを介してデータベースGoogle Cloud SQLに接続しています。私はそうするためにcodeigniter 3.0を使用していますが、mysqliドライバーはこの機能を可能にするために少し変更されています。
それは何ヶ月もうまく機能しています。しかしjustがこの警告を返し始めました:
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のキー交換をグーグル検索しましたが、あまり運がありませんでした。
これは、サーバーのキーが改ざんされた兆候ですか?私はそれらの最終更新日を確認しました-異常な最近のアクセスはありません。
私のサーバーがPHPまたはそのサーバー構成にいくつかのアップグレードを行ったために、この問題が発生する可能性がありますが、それが他のものではないことを確認して確認したかったのです。
主題に関する洞察/読みやすい資料をありがとう。
... error:14082174:SSL routines:SSL3_CHECK_CERT_AND_ALGORITHM:dh key too small
関心のあるエラー番号は、OpenSSLエラー0x14082174です。
SSL3_CHECK_CERT_AND_ALGORITHM
は通常、輸出グレードの暗号を有効にすると表示されます。 Logjamが原因で、非輸出グレードの交渉で再度表示される可能性があります(以下を参照)。
DHキーが小さすぎることが主な問題だと思いますが、それが何を意味するのかはわかりません。 「キーが小さすぎます」というメッセージとともに、Diffie–Hellmanのキー交換をグーグル検索しましたが、あまり運がありませんでした。
これは、最近の Logjam攻撃 の論文によるものです Imperfect Forward Secrecy:How Diffie-Hellman Fails in Practice 。
2048ビットのDiffie-Hellmanグループ以上を使用する必要があります。 512ビットまたは1024ビットのDiffie-Hellmanグループを使用しているではない必要があります。
最初に確認することは、暗号リスト文字列です。次のようになります。
"HIGH:!aNULL:!MD5:!RC4"
輸出グレードの暗号を避け、最新の暗号を使用します。ただし、DHコールバックが弱い/小さいフィールドサイズを使用していないことを確認する必要もあります。そのためには、サーバー構成を確認する必要があります。
一部の人々はkRSA
で問題を「解決」しています。 kRSA
はキーtransportスキームであり、キーagreementスキーム。 RSAキートランスポートスキームは前方秘密性を提供しないため、通常、その使用は推奨されません。実際、それはTLS 1.3から削除される予定です。
保護されているデータに依存するため、「通常は推奨されません」としか言えません。公開されているファイルのダウンロードを保護するSSL/TLSがある場合は、おそらく使用しても問題ありません。あなたのウェブサイトにログインがある場合、パスワードは秘密にされたデータであるため(おそらく一般にダウンロード可能なファイルとは異なり)、それを使用することはおそらく少し危険です。
キーの転送を回避し、それらに合格するには Qualsys SSL Labs 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ツールになるかもしれません。