web-dev-qa-db-ja.com

すべてのApache接続にTLSv1.1またはTLSv1.2を使用するように強制する方法

私はこれに対する解決策を見つけることができませんでした、もしあればそれを参照してください。

ランニング:

  • Windows7 x64
  • Apache 2.4.4
  • OpenSSL 1.0.1j

そして私の中に次のものがありますhttpd_ssl

SSLStrictSNIVHostCheck off  
SSLProtocol All -SSLv2 -SSLV3  
SSLCompression off  
SSLInsecureRenegotiation off  
SSLHonorCipherOrder on  

SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 
EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH EDH+aRSA !aNULL !eNULL 
!LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"

SSLUseStapling on  
SSLStaplingResponderTimeout 5  
SSLStaplingReturnResponderErrors off  

質問:

何をしても、TLSv1.1とTLSv1.2を有効にできないようです。
ServerSSLTestスクリプトを実行すると、サポートされているバージョンはTLSv1.0だけです。

何が足りないのですか?

3
deltaRoot

まず、OpenSSLでTLSv1.1とV1.2をサポートしている必要があります。v1.0.1jではサポートしています。

次に、SSLに関連する構成アイテムのApache V2.2.24(またはそれ以降)のサポートです。特に、TLS1より後のバージョン(つまり、TLSv1.1 TLSv1.2)を指定するには、それ以降のバージョンが必要です。あなたは2.4.4を持っているので、それは大丈夫なはずです。

次に、Apache構成パラメーターSSLProtocolSSLCipherSuiteの間にisの「相互作用」があります。

したがって、必要な構成TLSv1.1およびTLSv1.2の場合、次のようなものが必要になります。

SSLProtocol=All -SSLv2 -SSLV3 -TLSv1
SSLCipherSuite HIGH:!aNULL:!MD5:!RC4

より具体的な暗号スイートリストをお持ちいただきありがとうございます。

EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4

ただし、openssl(v1.0.1ストリーム)で確認したところ、次のTLSv1.2より前のスイートがサポートされていることがわかりました。

 openssl ciphers -s -v 'EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4'

ECDHE-RSA-AES256-SHA    SSLv3 Kx=ECDH     Au=RSA  Enc=AES(256)  Mac=SHA1
ECDHE-ECDSA-AES256-SHA  SSLv3 Kx=ECDH     Au=ECDSA Enc=AES(256)  Mac=SHA1
ECDHE-RSA-AES128-SHA    SSLv3 Kx=ECDH     Au=RSA  Enc=AES(128)  Mac=SHA1
ECDHE-ECDSA-AES128-SHA  SSLv3 Kx=ECDH     Au=ECDSA Enc=AES(128)  Mac=SHA1
DHE-RSA-AES256-SHA      SSLv3 Kx=DH       Au=RSA  Enc=AES(256)  Mac=SHA1
DHE-RSA-CAMELLIA256-SHA SSLv3 Kx=DH       Au=RSA  Enc=Camellia(256) Mac=SHA1
DHE-RSA-AES128-SHA      SSLv3 Kx=DH       Au=RSA  Enc=AES(128)  Mac=SHA1
DHE-RSA-SEED-SHA        SSLv3 Kx=DH       Au=RSA  Enc=SEED(128) Mac=SHA1
DHE-RSA-CAMELLIA128-SHA SSLv3 Kx=DH       Au=RSA  Enc=Camellia(128) Mac=SHA1

次に、ここ(セクションA.5)を確認します。 http://tools.ietf.org/html/rfc4346 opensslにリストされているサポートされているスイートのいずれも実際にはTLSv1.1が有効ではないと思います、したがって、テストした場合、最終的にはTLSv1.2のみになります(たとえば、Qualys https://www.ssllabs.com/ssltest/ )。

最後に、クライアントサポートの全体的な問題があります-上記のQualysリンクは、送信されたクライアントに接続できるクライアントのタイプ(特定のAndroidバージョンなど)まで)をリストしているので便利ですテストサーバー)。あなたは非常に暗号固有であるため、訪問者ベースにTLSv1が含まれないことがわかっている場合を除き、TLSv1(v1.0を読み取る)とV1.1およびV1.2を許可することでリスクを冒しすぎることはないと思います。有能なクライアントのみ。

5
Mark Bradley

自動ssl-configファイルを自動的に生成するために、Mozillaにはssl-configジェネレーターがあります。

https://mozilla.github.io/server-side-tls/ssl-config-generator/?server=Apache-2.4.0&openssl=1.0.1e&hsts=yes&profile=modern

これにより、openssl1.0.1eバージョンのApache2.4サーバーのテンプレートが提供されます。

これがsslセットアップに不慣れな人に役立つことを願っています。

1
psykid

SSLCipherSuiteを削除し、SSLProtocol行を次のように変更してみてください。

SSLProtocol -All +TLSv1.1 +TLSv1.2

SSLCipherSuiteは、構成ファイルに続く場合、SSLProtocolをオーバーライドすると思います。

0
kronenpj