Qualysのテストで 100%とA +を取得する方法については、多くのことが書かれています。 そのすべてについて、ほぼすべての場所でssl_ciphers
ディレクティブなどが、単に挿入する必要がある一種の魔法の行として与えられており、著者が修道院の下にあなたを導かないことを願っています。 この記事は、この誤解を修正することを目的としています。 この記事を読んだ後、 ssl_ciphers
ディレクティブはすべての魔法を失い、 ECDHEとAESは友人や兄弟のようになります。
また、テストで100%が実際に常に良いとは限らない理由もわかります。
準備する
Debian 8.7で作業します。 異なるディストリビューションを使用している場合、バージョンは同じか新しい必要があります。
# lsb_release -d Description: Debian GNU/Linux 8.7 (jessie) # openssl version OpenSSL 1.0.1t 3 May 2016 # nginx -V nginx version: nginx/1.6.2
指示に従ってLet's Encryptから証明書を受け取るようにnginxを構成しますが、これはドメインの証明書を受け取る前のみです。
certbot certonly -d example.com -d www.example.com
最小構成を使用します。 これ以上。 すべてデフォルトで。
server { server_name www.example.com example.com; listen 443 ssl default_server; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; }
デフォルト設定では、結果はまあまあです。 4、私たちの意見であれば。 Diffie-Hellmanアルゴリズム(以降、単にDHといいます)に従って、鍵交換の弱いパラメーターを宣誓します 。
強化されたパラメーターを作成できますが、そのようなパラメーターと速度は追加されず、一部の古いクライアントでサポートされています。 同じ古い顧客は、楕円曲線上のDHプロトコル(ECDHE)もサポートしています。つまり、 Google 、 Facebook 、 Mozilla 、 CloudFlareの後 、遅いEDH暗号を完全に放棄してECDHEを優先しても、何も失うことなく速度を上げることができます。
残りは簡単です。 推奨される暗号のリストが必要です。
そのリストのRSAキーを持つ証明書の場合、RSA認証のみの暗号が必要です。
ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES128-SHA ECDHE-RSA-AES256-SHA ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES256-SHA384 DHE-RSA-AES128-GCM-SHA256 DHE-RSA-AES256-GCM-SHA384 DHE-RSA-AES128-SHA DHE-RSA-AES256-SHA DHE-RSA-AES128-SHA256 DHE-RSA-AES256-SHA256
256ビットより弱い暗号とDHE暗号は除外します。 構成ディレクティブに残りのものをリストします。
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-SHA384;
しかし、これだけでは十分ではありません 。 少なくとも4096ビットのキーが必要です。
certbot certonly --renew-by-default --rsa-key-size 4096 -d example.com -d www.example.com
そして別の曲線。 OpenSSLの使用バージョンでは、1つだけを選択できます 。 人気のある最も信頼性の高いものを選択してください。
ssl_ecdh_curve secp384r1;
プラスで評価するには、HSTSを追加します。
add_header Strict-Transport-Security "max-age=31536000";
最後に、Protocol Support列で 100%の評価のために古いプロトコルを無効にします 。
ssl_protocols TLSv1.2;
完全な構成は次のとおりです。
server { server_name www.example.com example.com; listen 443 ssl default_server; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-SHA384; ssl_ecdh_curve secp384r1; add_header Strict-Transport-Security "max-age=31536000"; ssl_protocols TLSv1.2; }
暗号とプロトコルの設定にエラーがないことを確認してください。
$ nmap --script ssl-enum-ciphers -p 443 example.com Starting Nmap 7.40 ( https://nmap.org ) at 2017-03-01 00:00 UTC Nmap scan report for example.com (1.2.3.5) Host is up (0.030s latency). PORT STATE SERVICE 443/tcp open https | ssl-enum-ciphers: | TLSv1.2: | ciphers: | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (secp384r1) - A | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp384r1) - A | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (secp384r1) - A | compressors: | NULL | cipher preference: server |_ least strength: A Nmap done: 1 IP address (1 host up) scanned in 3.22 seconds
暗号の順序は間違っていますが、暗号は適切です。 しかし、それは期待されています。 テストを実行できます。
プラスで5点得点します。 幸福、喜び。 のようです。
短所
しかし、1つの問題があります。 テスト結果を「 ハンドシェイクシミュレーション」セクションまでスクロールすると、11未満のバージョン、JavaからSE 8、Androidからバージョン4.3までのIEユーザー、およびSafariの一部のバージョンでさえ、サイトにアクセスできないことがわかります。 0.9.8未満のOpenSSLバージョンでコンパイルされたソフトウェアについては、私も言いません。
別の問題があります: パフォーマンス 。 4096ビットキーは接続の速度に直接影響しますが、保護はあまり強化されません 。 256ビット暗号は、低電力プロセッサを搭載したモバイルデバイスやAES-NI(ハードウェアアクセラレーション)を使用しない他のクライアントの場合のように、接続の高速化にも役立ちません。
RSAの場合、組み込みのOpenSSLテストを使用して、速度への悪影響を簡単に確認できます。
openssl speed rsa2048 rsa4096
低電力のCeleron 1007Uでは、違いは明らかです。
sign verify sign/s verify/s rsa 2048 bits 0.002381s 0.000071s 420.0 14051.0 rsa 4096 bits 0.016790s 0.000260s 59.6 3852.8
サーバー側の署名は7倍遅くなります。 クライアント署名の検証は3.6倍遅くなります。 他のハードウェアでは、傾向は同じままです。 この速度の低下は、暗号の強度を約16%高めるための費用です 。
ChaCha20 / Poly1305対 AES-128
同様に、OpenSSL 1.1.0eで推奨される暗号の速度を確認します。
for cipher in aes-128-gcm aes-256-gcm chacha20-poly1305 do openssl speed -decrypt -evp $cipher 2>/dev/null | grep ^$cipher done | column -t
Celeron 1007Uでは、ChaCha20 / Poly1305暗号はAES-128の2倍の速度であり、後者はAES-256の1/3の速度です。 AES-NIを搭載したCore i7では、状況が異なります。ChaCha20/ Poly1305はAES-128よりも3倍遅く、AES-256はAES-128よりもわずかに遅いだけです。 暗号化では、画像はほぼ同じです。
デフォルトの曲線prime256v1
(別名secp256r1
またはNIST P-256)との鍵交換は、強化された曲線secp384r1
(NIST P-384) よりもはるかに高速です。
$ openssl speed ecdsap256 ecdsap384 ecdhp256 ecdhp384 sign verify sign/s verify/s 256 bit ecdsa (nistp256) 0.0001s 0.0003s 7923.8 3214.4 384 bit ecdsa (nistp384) 0.0006s 0.0023s 1756.6 430.1 op op/s 256 bit ecdh (nistp256) 0.0002s 4893.5 384 bit ecdh (nistp384) 0.0019s 525.9
P-384での作業には、操作に応じて7〜9倍の時間が必要です。
ECDSAとRSAを比較すると、ECDSAの場合、サーバーよりもクライアントの方が計算負荷が大きくなることがわかります。
自宅でテストを繰り返したい場合、テストは現在のプロセスの優先度を上げる必要があります。
sudo renice -1 $$
1つのことは明らかです。暗号とパラメーターの選択には、より慎重にアプローチする必要があります。
暗号検索の原理
リストを使用して暗号をリストすることは、再コンパイルやサードパーティのソースなしでnginxでChaCha20 / Poly1305を適切に使用できるようになるため、良いアイデアではありません。 明示的な暗号設定を使用すると、サーバーは再構成なしで新しいタイプの暗号化を使用しません。 これは、毎日考えたいことではありません。
キーワードまたはタグで暗号を選択すると、それぞれが特定の暗号グループに対応するようになります。 OpenSSLの異なるバージョンのキーワードは異なりますが、いつでも確認できます。
たとえば、 EECDHタグは、楕円曲線を使用したDHアルゴリズムに従って、ワンタイム(一時)キーを交換するすべての暗号に対応します。
$ openssl ciphers -v 'EECDH' | column -t ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(256) Mac=AEAD ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA384 ECDHE-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA384 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-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(128) Mac=AEAD ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(128) Mac=AEAD ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA256 ECDHE-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(128) Mac=SHA256 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 ECDHE-RSA-RC4-SHA SSLv3 Kx=ECDH Au=RSA Enc=RC4(128) Mac=SHA1 ECDHE-ECDSA-RC4-SHA SSLv3 Kx=ECDH Au=ECDSA Enc=RC4(128) Mac=SHA1 ECDHE-RSA-DES-CBC3-SHA SSLv3 Kx=ECDH Au=RSA Enc=3DES(168) Mac=SHA1 ECDHE-ECDSA-DES-CBC3-SHA SSLv3 Kx=ECDH Au=ECDSA Enc=3DES(168) Mac=SHA1 ECDHE-RSA-NULL-SHA SSLv3 Kx=ECDH Au=RSA Enc=None Mac=SHA1 ECDHE-ECDSA-NULL-SHA SSLv3 Kx=ECDH Au=ECDSA Enc=None Mac=SHA1
暗号は優先順位に従ってリストに表示されます。クライアントは最初の適切な暗号を選択し、指定された順序でリストを表示します。
OpenSSLの最新バージョンがある場合、同じリストを取得するには、クリアECDHEタグを使用します。これは、同じリストと対応する暗号プレフィックスを提供します。 現在のバージョンでは、どのタグを使用しているため、そのようなタグはありません 。
受け取ったリストでは、暗号化されていない暗号Enc=None
が付いている暗号が印象的です。 認証のみを提供するような暗号を除外します。 同時に、認証なしの暗号を除外します。
openssl ciphers -v 'EECDH:!aNULL:!eNULL'
完全かつ永続的な例外として、グループタグaNULLおよびeNULLに誤った暗号が負の値で示されます。 Au=None
またはEnc=None
暗号はリストに残りません。
タグを組み合わせて、暗号セットの共通部分を取得できます。 ECDHE、AES-256、およびGCMを組み合わせた暗号を取得します。
$ openssl ciphers -v 'EECDH+AES256+AESGCM' | column -t ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(256) Mac=AEAD
暗号のグループは、優先順位を低くし、先頭にプラスを付けることができます。 AES-256で暗号を削除せずに優先度を下げます。
$ openssl ciphers -v 'EECDH+aRSA+AES:+AES256' | column -t ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(128) Mac=AEAD ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA256 ECDHE-RSA-AES128-SHA SSLv3 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA1 ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA384 ECDHE-RSA-AES256-SHA SSLv3 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA1
暗号のグループを一時的に削除してから、別の形式で追加できます。 すべてのECDHE暗号から3DESの暗号を除外し、RSA鍵交換との組み合わせでのみそれらを返します。 このような弱い暗号は、リストの最後になければなりません。
$ openssl ciphers -v 'EECDH:-3DES:RSA+3DES' | tail -1 | column -t DES-CBC3-SHA SSLv3 Kx=RSA Au=RSA Enc=3DES(168) Mac=SHA1
暗号を選択
これで、nginxの暗号のリストを作成するためのすべてができました。OpenSSLの新しいバージョンがリリースされたときに追加する必要はありません。 古いブラウザと速度の要件をサポートする必要性を考慮しています。
すでに使用している暗号のリストを取得することから始めましょう。ただし、このタイプの証明書を使用したい場合に備えて、ECで証明書の暗号を除外しません。
$ openssl ciphers -v 'EECDH+AES256' | column -t ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(256) Mac=AEAD ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA384 ECDHE-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA384 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
実際、AESはそれほど必要ではありませんが、弱い3DESおよびRC4暗号は必要ありません。 後者は永久に完全に除外されます。
$ openssl ciphers -v 'EECDH:-3DES:!NULL:!RC4' | column -t ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(256) Mac=AEAD ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA384 ECDHE-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA384 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-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(128) Mac=AEAD ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(128) Mac=AEAD ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA256 ECDHE-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(128) Mac=SHA256 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
より高速な暗号を優先して、AES-256の暗号を下げましょう。 AES-256が本当に必要な場合に備えて、AES-256を完全には削除しません。 (彼の余分なビットは虚数です。)
$ openssl ciphers -v 'EECDH:+AES256:-3DES:!NULL:!RC4' | column -t ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(128) Mac=AEAD ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(128) Mac=AEAD ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA256 ECDHE-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(128) Mac=SHA256 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 ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(256) Mac=AEAD ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA384 ECDHE-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA384 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
このような暗号の文字列は、OpenSSLの次のバージョンのChaCha20 / Poly1305を除外しません。
$ openssl version; openssl ciphers -v 'EECDH:+AES256:-3DES:!NULL:!RC4' | column -t | head -n 6 OpenSSL 1.1.0e 16 Feb 2017 ECDHE-ECDSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH Au=ECDSA Enc=CHACHA20/POLY1305(256) Mac=AEAD ECDHE-RSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH Au=RSA Enc=CHACHA20/POLY1305(256) Mac=AEAD ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(128) Mac=AEAD ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(128) Mac=AEAD ECDHE-ECDSA-AES128-CCM8 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESCCM8(128) Mac=AEAD ECDHE-ECDSA-AES128-CCM TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESCCM(128) Mac=AEAD
一部の古いクライアントについては、一時キーなしでAESを返します。
$ openssl ciphers -v 'EECDH:+AES256:-3DES:RSA+AES:!NULL:!RC4' | column -t ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(128) Mac=AEAD ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(128) Mac=AEAD ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA256 ECDHE-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(128) Mac=SHA256 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 ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(256) Mac=AEAD ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA384 ECDHE-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA384 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 AES256-GCM-SHA384 TLSv1.2 Kx=RSA Au=RSA Enc=AESGCM(256) Mac=AEAD AES256-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA256 AES256-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA1 AES128-GCM-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AESGCM(128) Mac=AEAD AES128-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA256 AES128-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA1
最後に、純粋にIE8 / XPの一時キーなしで3DESを返します。 IE6 / XPはどうしても助けられません-デフォルトでTLSをサポートしません。
$ openssl ciphers -v 'EECDH:+AES256:-3DES:RSA+AES:RSA+3DES:!NULL:!RC4' | column -t ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(128) Mac=AEAD ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(128) Mac=AEAD ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA256 ECDHE-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(128) Mac=SHA256 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 ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(256) Mac=AEAD ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA384 ECDHE-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA384 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 AES256-GCM-SHA384 TLSv1.2 Kx=RSA Au=RSA Enc=AESGCM(256) Mac=AEAD AES256-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA256 AES256-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA1 AES128-GCM-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AESGCM(128) Mac=AEAD AES128-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA256 AES128-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA1 DES-CBC3-SHA SSLv3 Kx=RSA Au=RSA Enc=3DES(168) Mac=SHA1
合計
暗号が終了しました。 古いクライアントをサポートするには、TLSの下位バージョンを返す必要があり、速度のために、2048ビットの通常の曲線と証明書を使用します。
server { server_name www.example.com example.com; listen 443 ssl default_server; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; add_header Strict-Transport-Security "max-age=31536000"; ssl_ciphers EECDH:+AES256:-3DES:RSA+AES:RSA+3DES:!NULL:!RC4; }
この構成では、2017年の初めにGoogleとまったく同じ結果が得られます。
同時に、すべてのクライアントに対して、弱い暗号を使用せずにできるだけ早くサイトが開くことを確信しています。最新のブラウザはすべてECDHEを使用しています。
また、 OCSPステープルと、オプションでTLSセッションキャッシュを構成する必要があります 。