web-dev-qa-db-ja.com

NginxでTLSv1.1を無効にする方法

簡単な設定のようですが、TLSv1.1を無効にすることはできません。

nginx.conf/etc/nginx内:

ssl_protocols TLSv1.2;

ドメイン設定 last_nginx.conf(nginxDomainVirtualHost.phpのPleskテンプレートを介して変更):

ssl_protocols                TLSv1.2;    
ssl_ciphers                 ECDHE-RSA-AES256-SHA384:DHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA256:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!SRP:!CAMELLIA;

ssl_prefer_server_ciphers   on;
ssl_dhparam /etc/nginx/ssl/server.dh_pem;

それでもTLSv1.1は有効であり、opensslでテストすると次のように返されます。

openssl s_client -tls1_1 -connect mydomain.com:443 < /dev/null

    New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1.1
    Cipher    : DHE-RSA-AES256-SHA
    Session-ID: E298E87276A0776AF736439AF260FE0F92B17330ED97D5F3C2F87CF02C3F75A8

ここで何が欠けていますか? TLSv1.2のみが指定されているにもかかわらず、TLSv1.1がまだ有効になっているのはなぜですか?

TLSv1.1を無効にする方法の提案はありますか?

ありがとう!

2
user2723490

完全に(サニタイズされた)構成を投稿しなかったため、これは推測ですが、複数のサーバー間で共有listenブロックを使用している可能性があります。構成構文によって可能に見えますが、実際には、同じserverを共有するlistenブロック間で異なる暗号仕様を持つことはできません。

すなわち:

server {
   listen 443 ssl;
   server_name tls.example.com;
}

server {
   listen 443 ssl;
   server_name tls12.example.com;
   ssl_protocols TLSv1.2;
}

ここでtls12.example.comをカールすると、1.1がサポートされていることがわかります。ただし、tls.example.com serverに同じ制限を追加すると、1.2のみがサポートされます。

唯一の実際の修正は、制限に専用IPを使用するか、その(ip、port)の組み合わせのすべてのserverブロックが同じSSL暗号設定を持つようにすることです。

補足:上記の説明は、HTTP/2の有効化/無効化にも当てはまります。

1
Joshua DeWald