GNU/Linux >> Linux の 問題 >  >> Ubuntu

Ubuntu 20.04、18.04、16.04のNginxでTLS1.3を簡単に有効にする方法

前回の記事では、2018年8月に正式にリリースされたTLS 1.3プロトコルを有効にするために、OpenSSL 1.1.1でNginxソースコードをコンパイルする手順を説明しました。このチュートリアルでは、TLS1.3を有効にする簡単な方法を紹介します。 Ubuntu 20.04、18.04、16.04の場合

TLS1.3によりパフォーマンスとセキュリティが向上します

パフォーマンス面では、TLS1.2はHTTPS接続を確立するために2回のラウンドトリップが必要です。 TLS 1.3では、1回のラウンドトリップのみが必要です。 TLS 1.3は、ゼロラウンドトリップモード(0-RTTセッション再開)もサポートしているため、以前にWebサイトに接続したことがあるクライアントは、最初のメッセージでHTTP要求をサーバーに送信できます。これは、モバイルネットワークや遠く離れた場所にいるユーザーにとって大きな違いになります。

セキュリティの観点から、TLS 1.3は、ROBOT攻撃などのエクスプロイトの原因となる古い暗号スイートのサポートを削除しました。もちろん、これは過度に単純化された説明です。 CloudFlareにはTLS1.3の詳細な説明があります。

TLS1.3を有効にするための要件

NginxでTLS1.3を有効にする場合、2つの要件があります。

  1. NginxのバージョンはTLS1.3をサポートしている必要があります。これは、Nginx1.13以降を意味します。
  2. NginxはOpenSSL1.1.1以降でビルドする必要があります。

Ubuntu18.04および20.04にはOpenSSL1.1.1が付属しています

OpenSSL1.1.1はUbuntu18.10および20.04リポジトリに含まれており、Ubuntu 18.10/20.04リポジトリのNginxパッケージはOpenSSL1.1.1で構築されています。

Ubuntu 18.04が最初にリリースされたときは、OpenSSL1.0.2のみが付属しています。ただし、OpenSSL1.1.1はUbuntu18.04.3にバックポートされています。

まだUbuntu18.04.2を使用している場合は、次のコマンドを実行して18.04.3にアップグレードしてください。

sudo apt update 
sudo apt upgrade

OpenSSL1.1.1で構築された最新バージョンのNginxをUbuntu16.04にインストールする

Ubuntu 16.04リポジトリのNginxパッケージは、OpenSSL1.1.1でビルドされていません。 OpenSSL 1.1.1を使用してNginxを手動でコンパイルできますが、時間がかかり、新しいバージョンのNginxがリリースされたときに再コンパイルする必要があります。幸い、Debian開発者でDNSコミュニティの重要人物であるOndřejSurýによるPPA(パーソナルパッケージアーカイブ)からNginxをインストールできます。彼は、Apache、BIND、MariaDB、PHPなどを含むDebianリポジトリ用の多くのパッケージを管理しています。また、公式のcertbotPPAの管理者の1人でもあります。だから私は彼のPPAを信頼していて、それを私のサーバーで使用しています。

以前に別のNginxリポジトリ(nginx.orgなど)を追加したことがある場合は、それを無効にします。たとえば、/etc/apt/sources.list.d/nginx-repo.listで定義された別のNginxリポジトリがあります ファイル。そのファイルのすべての行をコメントアウトして無効にします。

UbuntuにOndřejSurýNginxPPAを追加するには、次のコマンドを実行します。

sudo add-apt-repository ppa:ondrej/nginx

sudo apt update

次に、既存のNginxパッケージを削除します。 (Nginx構成ファイルは削除されません。)

sudo apt remove nginx

iRedMailとNginxを使用する場合は、sudo apt remove nginx-fullを実行します。 Nginxを削除します。

そして、PPAからNginxをインストールします。

sudo apt install nginx

新しいバージョンの構成ファイルをインストールするかどうかを尋ねられたら、Nを選択します 。 certbot NginxプラグインはNginxと一緒に削除される可能性があるため、再度インストールしてください。

sudo apt install python3-certbot-nginx

Nginxのバージョンを確認してください。

sudo nginx -V

NginxがOpenSSL1.1.1で構築されていることがわかります。

nginx version: nginx/1.14.1
built with OpenSSL 1.1.1 11 Sep 2018 (running with OpenSSL 1.1.0g 2 Nov 2017)
TLS SNI support enabled

このPPAは、Ubuntu16.04用のOpenSSL1.1.1も提供します。 Ubuntu16.04上のNginxがまだOpenSSL1.1.0で実行されている場合は、OpenSSLパッケージをアップグレードする必要があります。

sudo apt upgrade

Googleコンピューティングエンジンを使用している場合、上記のコマンドを実行しているときに次のメッセージが表示されることに注意してください。

The following packages have been kept back:
     libssl1.1 openssl

これは、OpenSSL1.1.1パッケージが一部のGoogleコンピューティングエンジンパッケージと競合しているためです。 OpenSSLをアップグレードするには、次のコマンドを実行する必要があります。

sudo apt dist-upgrade

Ubuntu 20.04、18.04、16.04のNginx仮想ホストでTLS1.3を有効にする

OpenSSL 1.1.1でNginxを入手したら、Nginx仮想ホストファイルを開きます。

sudo nano /etc/nginx/conf.d/site.conf

または

sudo nano /etc/nginx/sites-enabled/site.conf

TLS 1.3を有効にするには、TLSv1.3を追加するだけです。 ssl_protocolsへ SSLサーバーブロックのディレクティブ。

ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

Let’s Encrypt証明書を使用している場合、SSL構成は/etc/letsencrypt/options-ssl-nginx.confで設定できます。 ファイル。ちなみに、certbotはデフォルトでTLSv1を有効にします 、安全ではないので、削除できます。 iRedMailとNginxを使用している場合は、/etc/nginx/templates/ssl.tmplでSSL構成を編集する必要があります。 ファイル。

ファイルを保存して閉じます。次に、変更を有効にするためにNginxを再起動します。

sudo systemctl restart nginx

WebブラウザでのTLSバージョンの確認

Firefox 63以降を使用して、Webページをリロードし、空白の領域を右クリックして、View Page Infoを選択します。 コンテキストメニューで。 Securityに移動します タブをクリックすると、TLS1.3が使用されていることがわかります。

Google Chrome 70以降を使用して、サイトにWebページをリロードします。次に、Ctrl+Alt+Iを押します 開発者ツールを開きます。 Securityに移動します タブをクリックすると、TLS1.3が使用されていることがわかります。

TLSv1.3はCloudflareとオリジンサーバーの間で使用されていますか?

はい。 CloudflareはフロントエンドサーバーでTLS1.3をサポートし、オリジンサーバーに接続するときにTLSv1.3も使用します。使用されているTLSバージョンを確認するには、/etc/nginx/nginx.confでカスタムログ形式を作成できます。 ファイル。

sudo nano /etc/nginx/nginx.conf

httpに次のテキストを追加します コンテキスト。

log_format combined_ssl '$remote_addr - $remote_user [$time_local] '
                  '$ssl_protocol/$ssl_cipher '
                  '"$request" $status $body_bytes_sent '
                  '"$http_referer" "$http_user_agent"';

ファイルを保存して閉じます。次に、access_logを追加します SSLserverのディレクティブ コンテクスト。ログはcombined_sslにあります フォーマット。

access_log /var/log/nginx/your-site.access.log combined_ssl;

ファイルを保存して閉じます。次に、Nginxをリロードします。アクセスログファイルには、TLS1.3が使用されていることを示す以下のようなものが表示されます。

172.68.132.115 - - [25/Feb/2020:16:07:26 +0800] TLSv1.3/TLS_AES_256_GCM_SHA384 "GET / HTTP/1.1"

次のステップ

このチュートリアルが、Ubuntu 20.04、Ubuntu 18.04、およびUbuntu16.04のNginxでTLS1.3を有効にするのに役立つことを願っています。 Webサイトをハッキングから保護するためにModSecurityWebアプリケーションファイアウォールを設定することもできます。

  • Debian/UbuntuでNginxを使用してModSecurityを設定する方法

いつものように、この投稿が役に立った場合は、無料のニュースレターを購読して、より多くのヒントやコツを入手してください。気をつけて🙂


Ubuntu
  1. Ubuntu18.04でSSHを有効にする方法

  2. Ubuntuリモートデスクトップを有効にする方法

  3. Ubuntu 20.04 – Hweを有効にする方法は?

  1. UbuntuでNGINXステータスを確認する方法

  2. Ubuntu17.10で常夜灯を有効にする方法

  3. Ubuntu19.04で分数スケーリングを有効にする方法

  1. Ubuntu18.04にNginxをインストールする方法

  2. Ubuntu16.04にNginxをインストールする方法

  3. Ubuntu20.04にNginxをインストールする方法