Apache および Nginx で TLS 1.3 を有効にする方法
TLS 1.3 は Transport 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.3 は Nginx 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 プロトコルが正常に有効になりました。この記事に関してご質問がございましたら、以下のコメント欄にお気軽にお問い合わせください。