ApacheサーバーのSSL暗号スイートでRC4を無効にする


17

私自身の回答の編集セクションをご覧ください。それらには、この難問の説明が含まれています

CentOS 6.5 VPSで実行されているApache 2.2.9サーバーのRC4を無効にしようとしていますが、成功しないようです。

最近購入したビジネス検証済み証明書がインストールされ、SSL接続が正常に実行されていますが、いくつかのチュートリアルにあるように、「セキュリティを強化する」ために可能な限り設定を行いました。

Qualys SSL Labsで構成を確認すると、結果ページに「このサーバーはRC4暗号を受け入れますが、これは弱いです。グレードはBに制限されています。」

しかし、私はこれをssl.confに入れました:

 SSLCipherSuite HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4:!SSLv2:!SSLv3

この質問の答えにあるスクリプトをtest-ssl-ciphers.shという名前のファイルに保存し、IPアドレスをループバックアドレスに変更しました。これは次の結果です./test-ssl-ciphers.sh | grep -i "RC4"

Testing ECDHE-RSA-RC4-SHA...NO (sslv3 alert handshake failure)
Testing ECDHE-ECDSA-RC4-SHA...NO (sslv3 alert handshake failure)
Testing AECDH-RC4-SHA...NO (sslv3 alert handshake failure)
Testing ADH-RC4-MD5...NO (sslv3 alert handshake failure)
Testing ECDH-RSA-RC4-SHA...NO (sslv3 alert handshake failure)
Testing ECDH-ECDSA-RC4-SHA...NO (sslv3 alert handshake failure)
Testing RC4-SHA...NO (sslv3 alert handshake failure)
Testing RC4-MD5...NO (sslv3 alert handshake failure)
Testing RC4-MD5...NO (sslv3 alert handshake failure)
Testing PSK-RC4-SHA...NO (no ciphers available)
Testing KRB5-RC4-SHA...NO (no ciphers available)
Testing KRB5-RC4-MD5...NO (no ciphers available)
Testing EXP-ADH-RC4-MD5...NO (sslv3 alert handshake failure)
Testing EXP-RC4-MD5...NO (sslv3 alert handshake failure)
Testing EXP-RC4-MD5...NO (sslv3 alert handshake failure)
Testing EXP-KRB5-RC4-SHA...NO (no ciphers available)
Testing EXP-KRB5-RC4-MD5...NO (no ciphers available)

これらの各行には「NO」が含まれます。これは、スクリプトによると、サーバーが指定された暗号の組み合わせをサポートしていないことを意味します。

さらに、このコマンドgrep -i -r "RC4" /etc/httpdは上記のssl.confファイルのみを提供します。

また、openssl ciphers -V私の暗号スイートで実行すると、RC4暗号はまったく表示されません。これは、構成文字列を考えると意味があります。

したがって、SSLチェックWebサイトが「サーバーがRC4を受け入れる」と言っている理由について、どういうわけか失われています。さらに、次の暗号も受け入れられているものとしてリストします。

TLS_RSA_WITH_RC4_128_MD5
TLS_RSA_WITH_RC4_128_SHA
TLS_ECDHE_RSA_WITH_RC4_128_SHA

誰にも説明がありますか?私は何か間違ったことをしていますか?RC4または「受け入れ」のサポートを構成する別の場所があるかもしれません。

ありがとう。

[ 編集 ]自宅の仮想マシンでCentOS 6.6を使用して、ループバックアドレスの代わりにドメイン名を使用してVPSに対してスクリプトを再度実行しました。このセットアップは、暗号のリストがVMのopensslインスタンスによって提供されることを意味します。YESを生成する暗号の中にRC4がまだありません。

回答:


16

更新された証明書のインストール中に、ISPConfigでHTTPSに必要なデータのセット全体(証明書、秘密キー、CAチェーンなど)を(ドメインおよび各サブドメインに対して)指定することで問題が発生することを発見しました。

言い換えると、データセットを削除すると、ドメインAを評価するQualysテストが行​​われ、同時にRC4に関する警告も削除されます。詳細を元に戻すと、警告が返され、グレードが再びBに制限されます。これにより、因果関係に関する疑いの余地はなくなります。

各vhostの詳細を提供することで、ssl.confで指定した暗号スイートがデフォルトで上書きされた新しい環境が何らかの形で作成されたかのようです。奇妙な。

解決策は、各仮想ホストのApacheディレクティブテキスト領域にSSLCipherSuite仕様を追加することです。これは私がAグレードを取得する構成にあるものです:

SSLProtocol ALL -SSLv2 -SSLv3
SSLHonorCipherOrder on
# Compression is disabled by default on my distribution (CentOS 6)
# SSLCompression off 
SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS

編集(2017-05-16):この問題に関する追加の発見:の指定SSLCipherSuiteは必須です。サーバーレベルで指定されたものが仮想ホスト構成に自動的に適用されないのに、なぜこの特定のディレクティブを推測することはできません。CentOS 6.9でApache 2.2.15を実行しています。

編集(2018-06-18):詳細情報。私はちょうどことを発見したSSLCipherSuiteベースmod_sslの構成ファイルで(CentOSの6に、ファイルがで発見された:ディレクティブは、単一の時間を指定することができ、それがすべての仮想ホストに適用されます/etc/httpd/conf.d/ssl.conf、あなたは、単にディレクティブを指定する必要があります)のしデフォルトの仮想ホスト。Apache 2.2のドキュメントでは、このディレクティブのデフォルト値はSSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXPです。これがRC4暗号の起源であると考えています。仕様が存在しない場合は、「グローバル」コンテキストに仕様がなかったため、デフォルト値が適用されます。この理解は私にとって謎だったものを終わらせます。皮肉なことに、この説明を見つけたら、CentOS 7に切り替えようとしています!HTH。


6
SSLCipherSuite HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4:!SSLv2:!SSLv3
                                                                    ^^^^^^^

悪いアイデア。すべてのSSLv3暗号を無効にすると、TLS1.0およびTLS1.1で使用可能な暗号が無効になり、TLS1.2で新たに導入された暗号のみが残ります(サーバーがTLS1.2をサポートしている場合)

したがって、SSLチェックWebサイトが「サーバーがRC4を受け入れる」と言っている理由について、どういうわけか失われています。さらに、次の暗号も受け入れられているものとしてリストします。

ローカルテストと外部テストの両方が同じサーバー(IPアドレス)にアクセスしていることを確認してください。example.com異なるホスト上にある多くのサイトを見てきましたwww.example.comので、テストは異なります。


はい、ルートドメインとそのサブドメインは同じVPS上にあります。VPSに関連付けられたIPアドレスが1つあり、ISPConfigを使用して管理します。ありがとう。
AbVog

SSLLabsを使用します。表示されるIPとシステムのIPを比較してください。結果に影響する可能性のある他の(リバース)プロキシまたはCDNが前にないことを確認してください。
ステフェンUllrich

「すべてのSSLv3暗号を無効にすると、TLS1.0およびTLS1.1で使用可能な暗号が無効になり、TLS1.2で新たに導入された暗号はわずかになります(サーバーがTLS1.2をサポートしている場合)」
Rohnアダムス

@RohnAdams:目的がRC4を無効にすることである場合、「!RC4」の部分は問題ありません。問題は、さらに「!SSLv3」を使用することによるオーバーブロッキングでした。使用する便利な暗号については、Mozilla Cipher Generatorを参照してください。
ステフェンUllrich

2

Qualys SSLラボはデフォルトホストなどに非常に敏感です。そのIPアドレスのすべてのHTTPS VirtualHostが(証明書ファイルを除いて)まったく同じ設定を使用していることを確認してください。一部のテストでは、デフォルトのVirtualHostが選択されているようです。私のターゲットの仮想ホストでは、有効な暗号は1つだけでしたが、Qualysはデフォルトの仮想ホストからはるかに大きなリストを見つけていました。

また、SSLテストに関するより詳細な情報を提供する見栄えの良いスクリプトもここで見つけました。


2

私のサイトの1つでこれをただ見ていました。@AbVogの回答に基づいて、実際にはデフォルトのvhost内にのみディレクティブがあることがわかりました。ディレクティブをグローバルコンテキストに移動すると、すべてがうまくいきました。

余談ですが、https://cipherli.st/にも遭遇しましたこれには、さまざまなパッケージのSSL構成の適切なリストがあります。現在のApacheの推奨事項は次のとおりです。

SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff

# Requires Apache >= 2.4
SSLCompression off 
SSLSessionTickets Off
SSLUseStapling on 
SSLStaplingCache "shmcb:logs/stapling-cache(150000)" 

0

Apache / 2.4.25を使用したFedora 25では、暗号は暗号化ポリシーによって処理されます(/ etc / cryptopolicies / backendsを参照)。デフォルト設定ではRC4が完全に無効になっているため、Apache設定で暗号を改ざんする必要はありません。最新のssl.confはデフォルトではインストールされず、conf.dディレクトリにssl.conf.rpmnewとして残されるため、必ず使用するようにしてください。

SSLを構成するには、証明書、ServerNameおよびDocumentRootを指定する必要がありました。Squirrelmailの場合。

SSLCertificateFile /etc/letsencrypt/live/mail.xxxx.dk/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mail.xxxx.dk/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/mail.xxxx.dk/chain.pem
SSLCACertificateFile /etc/letsencrypt/live/mail.xxxx.dk/fullchain.pem
ServerName mail.xxxx.dk:443
DocumentRoot "/usr/share/squirrelmail"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.