ウェブサイト検索

Apache および Nginx で TLS 1.3 を有効にする方法


TLS 1.3Transport Layer Security (TLS) プロトコルの最新バージョンであり、適切な IETF 標準を備えた既存の 1.2 仕様に基づいています。 RFC 8446。以前のバージョンよりも強力なセキュリティとより高いパフォーマンスの向上を提供します。

この記事では、有効な TLS 証明書を取得し、Apache でホストされているドメインで最新の TLS 1.3 バージョンのプロトコルを有効にするためのステップバイステップのガイドを示します。 Nginx Web サーバー。

要件:

  • Apache バージョン 2.4.37 以降。
  • Nginx バージョン 1.13.0 以降。
  • OpenSSL バージョン 1.1.1 以降。
  • DNS レコードが正しく構成された有効なドメイン名。
  • 有効な TLS 証明書。

Let’s Encrypt から TLS 証明書をインストールする

Let’s Encrypt から無料の SSL 証明書を取得するには、Acme.sh クライアントと、図に示すように Linux システムにいくつかの必要なパッケージをインストールする必要があります。


apt install -y socat git  [On Debian/Ubuntu]
dnf install -y socat git  [On RHEL/CentOS/Fedora]
mkdir /etc/letsencrypt
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh 
./acme.sh --install --home /etc/letsencrypt --accountemail [email 
cd ~
/etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --ocsp-must-staple --keylength 2048
/etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --ocsp-must-staple --keylength ec-256

: 上記のコマンドの example.com を実際のドメイン名に置き換えます。

SSL 証明書をインストールしたら、次に説明するようにドメインで TLS 1.3 を有効にすることができます。

Nginx で TLS 1.3 を有効にする

上記の要件で述べたように、TLS 1.3Nginx 1.13 バージョンからサポートされます。古いバージョンの Nginx を実行している場合は、まず最新バージョンにアップグレードする必要があります。


apt install nginx
yum install nginx

Nginx がコンパイルされたときの Nginx バージョンと OpenSSL バージョンを確認します (nginx バージョンが少なくとも 1.14 であることを確認してください) および openssl バージョン 1.1.1)。


nginx -V
サンプル出力

nginx version: nginx/1.14.1
built by gcc 8.2.1 20180905 (Red Hat 8.2.1-3) (GCC) 
built with OpenSSL 1.1.1 FIPS  11 Sep 2018
TLS SNI support enabled
....

次に、nginx のインストールを開始し、有効にして確認します。


systemctl start nginx.service
systemctl enable nginx.service
systemctl status nginx.service

次に、好みのエディターを使用して、nginx vhost 構成 /etc/nginx/conf.d/example.com.conf ファイルを開きます。


vi /etc/nginx/conf.d/example.com.conf

次に、ssl_protocols ディレクティブを見つけて、以下に示すように行の末尾に TLSv1.3 を追加します。


server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;

  server_name example.com;

  # RSA
  ssl_certificate /etc/letsencrypt/example.com/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/example.com/example.com.key;
  # ECDSA
  ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/example.com_ecc/example.com.key;

  ssl_protocols TLSv1.2 TLSv1.3;
  ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
  ssl_prefer_server_ciphers on;
}

最後に、構成を確認し、Nginx をリロードします。


nginx -t
systemctl reload nginx.service

Apache で TLS 1.3 を有効にする

Apache 2.4.37 以降では、TLS 1.3 を利用できるようになります。古いバージョンのApacheを実行している場合は、まず最新バージョンにアップグレードする必要があります。


apt install apache2
yum install httpd

インストールすると、Apache と、Apache がコンパイルされた OpenSSL のバージョンを確認できます。


httpd -V
openssl version

次に、nginx のインストールを開始し、有効にして確認します。


-------------- On Debian/Ubuntu -------------- 
systemctl start apache2.service
systemctl enable apache2.service
systemctl status apache2.service

-------------- On RHEL/CentOS/Fedora --------------
systemctl start httpd.service
systemctl enable httpd.service
systemctl status httpd.service

次に、お気に入りのエディタを使用して、Apache 仮想ホスト構成ファイルを開きます。


vi /etc/httpd/conf.d/vhost.conf
OR
vi /etc/apache2/apache2.conf

次に、ssl_protocols ディレクティブを見つけて、以下に示すように行の末尾に TLSv1.3 を追加します。


<VirtualHost *:443>
SSLEngine On

RSA
ssl_certificate /etc/letsencrypt/example.com/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/example.com/example.com.key;
ECDSA
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/example.com.key;

ssl_protocols TLSv1.2 TLSv1.3
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
ssl_prefer_server_ciphers on;
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem

     ServerAdmin [email 
     ServerName www.example.com
     ServerAlias example.com
    #DocumentRoot /data/httpd/htdocs/example.com/
    DocumentRoot /data/httpd/htdocs/example_hueman/
  # Log file locations
  LogLevel warn
  ErrorLog  /var/log/httpd/example.com/httpserror.log
  CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/example.com/httpsaccess.log.%Y-%m-%d 86400" combined
</VirtualHost>

最後に、構成を確認し、Apache をリロードします。


-------------- On Debian/Ubuntu -------------- 
apache2 -t
systemctl reload apache2.service

-------------- On RHEL/CentOS/Fedora --------------
httpd -t
systemctl reload httpd.service

サイトがTLS 1.3を使用していることを確認する

ウェブサーバーを介して設定したら、Chrome 70 以降 バージョンの Chrome ブラウザ開発ツールを使用して、サイトが TLS 1.3 プロトコルでハンドシェイクしていることを確認できます。

それだけです。 Apache または Nginx Web サーバーでホストされているドメインで TLS 1.3 プロトコルが正常に有効になりました。この記事に関してご質問がございましたら、以下のコメント欄にお気軽にお問い合わせください。