過去2年間で、最適なSSL暗号スイート構成と見なされるものにいくつかの変更が加えられました(例:BEASTおよびCRIME攻撃、RC4の弱点)
私の質問は、次の目標を実現するために現在有効なSSL暗号スイートのセットと考えられるものです。
最も安全な設定は、暗号だけでなく、使用されるtlsバージョンにも依存します。 opensslの場合、tls 1.1/1.2が推奨されます。 BEASTとCRIMEはクライアントへの攻撃であり、通常はクライアント側で軽減されますが、サーバー側の軽減もあります。
完璧なセットアップの場合:SSLは常に高レベルのパフォーマンスに影響を与えます。RC4やその他の高速暗号スイートは、静的コンテンツ、特に自分のCDNから提供された場合。
OpenSSLを理解するための素晴らしいガイドは OpenSSL Cookbook[〜#〜] pfs [〜#〜] 、cipher-suites、tls-versionなどについても詳しく説明しています。pp 。PFSと実用的なセットアップを説明する2つのブログ投稿があります。
古いクライアントでもPFSを有効にするcipher-suites-suggestions:
# Apache
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 \
EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 \
EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"
# nginx
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 \
EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 \
EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";
詳細なnginx/ssl-manualについては、これに案内したいと思います Nginx + SSL + SPDYのガイド 。
この回答が書かれてから1年間、Mozillaのガイドは定期的に更新されています。以下の私の予約はすべて考慮に入れられており、私は心からガイドをお勧めします。
Mozillaのサーバー側TLS ガイドを読むことをお勧めします。それは包括的であり、古いクライアントとの互換性に特に注意を払っており、時にはセキュリティを損なうことがあります。 (結局のところ、IE 6人のユーザーがFirefoxをダウンロードできるに値します。)私はいくつかのことを強調したいと思います:
サポート Windows XP/IE 6 は最適ではありません。できれば落とすことをお勧めします。 SSL 3.0が必要です。これにより、適切なクライアントがダウングレード攻撃に対応できるようになります。 編集:上記のコメントのAnti-weakpasswordsレポートでIE 6canがTLSをサポート1.0。IE 6クライアントが何パーセントをサポートしているか、または有効にしているかはわかりません。
XP/IE8 のサポートは悪くありません。 TLS 1.0をサポートしていますが、最良の暗号スイートはDES-CBC3-SHA
そして、それは完全転送秘密またはSNIをサポートしません。 (その次善の暗号スイートはRC4-SHA
およびRC4-MD5
。 3DESは非常に低速ですが、RC4にはセキュリティの問題があります。可能であれば避けてください。)
2048ビットのDiffie-Hellmanパラメータはセキュリティの観点から最適ですが、Java 6は1024ビットパラメータのみをサポートします。 一般的な1024ビットパラメータは、 NSA supercomputers で分割されていますが、それ以外の場合は、現時点では1024ビットDHの方が多少安全です。使用する必要がある場合があります(Java 7はECDHEをサポートし、DHEの問題全体をバイパスしますパラメータサイズ。)
Mozillaの主要な暗号スイートリストにはRC4が含まれています。上記のように、代わりに3DESを使用する RC4 weaknesses セクションのリストをお勧めします。
Mozillaの設定例はSSL 3.0を有効にします。私が言ったように、私はそれを思いとどまらせます。
Mozillaの設定例は主に2048ビットのDHパラメータを推奨していますが、オプションとして1024も提供しています。
もちろん、最初のステップはOpenSSL(または使用するライブラリ)を最新の状態に保つことです
しかし、新しい脆弱性が発見されてブラウザがアップグレードされると、ここでの答えは古くなる可能性があります()。 Mozilla SSL Configuration Generatorを使用して、使用する構成を確認することをお勧めします。
Webサーバーで構成する「最適な」SSL暗号は、顧客の要件によって異なります。多くの場合、それはプロトコルと暗号スイートの選択の要因になります。それがあなたに当てはまるかどうかはわかりません。
可能な限り最高のセキュリティを構成できます。TLS1.2プロトコルのみ、Perfect Forward Security(PFS)の暗号のみ、およびAES 256のみをサポートします。PFS内では、楕円曲線バリアントECDHEのみをサポートできます。認証された暗号化を提供し、非常に優れたパフォーマンスを提供する新しい安全なGCM暗号を選択できます(AES-NI命令を使用)。しかし、最も重要な顧客がWindows 7でIE8を使用していて、ブラウザーをアップグレードするように説得できない場合、彼らはサービスを使用できず、顧客を失うことになります。
ssllabs.comは、サイトをスキャンし、A +、A、Bなどの評価を与えるWebサービスを提供します。この評価は、4つのパラメーターで受け取った数値スコア(最大100)に基づいています---証明書、プロトコルサポート、キー交換、および暗号強度。いくつか挙げると、Perfect Forward Secrecy(PFS)、Strict Transport Security(HSTS)がサポートされている場合は、より高い評価が得られます。
ブラウザやサーバーにパッチが適用されたり、新しい弱点が発見されたり、新しいエクスプロイトが発見されたりするなど、一定期間にスコアが変化する可能性があることに注意してください。以前は、ssllabsは、BEAST攻撃のサーバー側の緩和策を実装していないサイトに低い評価を付けていました。しかし、クライアント側で緩和されていると見なすため、 それをやめた がありますが(遅延Appleを除く)、緩和はRC4(プロトコルTLS 1.0以下)の強制に関係していて、 RC4は以前考えられていたよりもはるかに弱いことがわかりました。
ssl labs サイトにアクセスし、URLを入力してスコアを取得できます。
SSLラボレポートには、ハンドシェイクシミュレーションに関するセクションが含まれています。このセクションには、多数のクライアント(ブラウザ、Java、openssl)と、サーバーとネゴシエートされるプロトコル、暗号スイート、キーサイズが表示されます。ネゴシエーションが不可能な場合は、「プロトコルまたは暗号スイートの不一致」が赤で表示されます。重要な顧客が使用する構成のハンドシェイクシミュレーションを検索できます。例えば、あなたはエントリを見るかもしれません
IE 8-10/Win7, TLS 1.0, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, FS 256
ただし、サーバーのssl構成を強化してTLS 1.2のみをサポートするとすると、この行は次のようになります。
IE 8-10/Win7, Protocol or cipher suite mismatch, Fail
しかし、顧客が移行/更新/アップグレードするときに、TLS 1.2のみ、PFSのみ、および256ビットのみを目標としてセキュリティを強化できます
レポートが提供するもう1つの重要な情報は、暗号スイートがサーバー優先順であるかどうかです。前者の場合、サーバー構成にリストされている暗号の順序が優先されます-したがって、優先する暗号スイートを最初に配置します。サーバーとクライアントの両方が使用できるリストの最初の暗号が選択されます。 Apacheを使用する場合、 "SSLHonorCipherOrder on"ディレクティブでこれを有効にできます。 nginxの場合、ディレクティブは「ssl_prefer_server_ciphers on;」です。