Ubuntu20.04でLet'sEncryptを使用してApacheを保護する

Let's Encryptは、無料の自動のオープンな証明書プロバイダーです。これは、無料の[SSL証明書](https://cloud.tencent.com/product/symantecssl?from=10680)を提供するインターネットセキュリティ研究グループ(ISRG)によって開発されました。

Let's Encryptによって発行された証明書は、ほとんどのブラウザーで信頼されており、発行日から90日間有効です。

このガイドでは、ApacheWebサーバーを実行しているUbuntu20.04に無料のLet'sEncryptSSl証明書をインストールする方法について説明します。また、SSL証明書を使用してHTTP / 2を有効にするようにApacheを構成する方法も示します。

1.前提条件##

次の手順に進む前に、次の前提条件を確認してください。

2つ目は、Certbotをインストールする##

certbotを使用して証明書を取得します。これは、Let's EncryptSSL証明書の取得と更新のタスクを自動化するために使用されるコマンドラインツールです。

certbotパッケージは、デフォルトのUbuntuソフトウェアソースに含まれています。次のコマンドを使用して、パッケージリストをアップグレードし、cerbotをインストールします。

sudo apt update
sudo apt install certbot

3つ目は、強力なDh(Diffie-Hellman)グループを生成する##

Diffie–Hellmanキー(DH)は、安全でない通信チャネルでパスワードを安全に交換するためのスキームです。安全性を高めるために2048ビットのDH係数を生成します。

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

サイズを4096ビットに増やすことができますが、システムエントロピーによっては、生成プロセスに30分以上かかる場合があります。

第四に、Let's EncryptSSL証明書を取得します##

ドメイン名のSSL証明書を取得するには、最初にWeBrootプラグインを使用して一時ファイルを作成し、 $ {webroot-path} /。well-known / acme-challengeディレクトリにドメイン名を確認する必要があります。 Let's Encryptサーバーは、ドメイン名を確認するためにこの一時ファイルを要求します。 Let's Encryptサーバーは、HTTP要求を一時ファイルに送信して、ドメイン名が指すサーバーがcerbotが実行するサーバーであることを確認します。

手順を簡単にするために、 .well-known / acme-challengeのすべてのHTTPリクエストを単純なフォルダー / var / lib / letsencryptに入れます。

次のコマンドを実行してフォルダを作成し、Apacheサーバーで書き込み可能にします。

sudo mkdir -p /var/lib/letsencrypt/.well-known
sudo chgrp www-data /var/lib/letsencrypt
sudo chmod g+s /var/lib/letsencrypt

コードの重複を回避し、構成を保守可能にするには、次の2つの構成コードスニペットを作成します。

/etc/apache2/conf-available/letsencrypt.conf

Alias /.well-known/acme-challenge/"/var/lib/letsencrypt/.well-known/acme-challenge/"<Directory "/var/lib/letsencrypt/">
 AllowOverride None
 Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
 Require method GET POST OPTIONS
< /Directory>

/etc/apache2/conf-available/ssl-params.conf

SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite          ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder     off
SSLSessionTickets       off

SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"

SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparam.pem" 

Header always set Strict-Transport-Security "max-age=63072000"

上記のコードスニペットは、[Mozilla](https://ssl-config.mozilla.org/)が推奨する暗号化構成を使用しています。これにより、OCSP、HTTP Strict Transport Security(HSTS)、Dhキー、およびセキュリティに重点を置いたいくつかのHTTPヘッダーの必須の追加が可能になります。

構成ファイルを有効にする前に、 mod_ssl mod_headersが有効になっていることを確認してください。

sudo a2enmod ssl
sudo a2enmod headers

次に、次のコマンドを使用してSSL構成ファイルを有効にします。

sudo a2enconf letsencrypt
sudo a2enconf ssl-params

HTTP / 2モジュールを有効にすると、Webサイトがより高速で堅牢になります。

sudo a2enmod http2

Apache構成をリロードして、変更を有効にします。

sudo systemctl reload apache2

これで、webrootプラグインを使用してCertbotツールを実行し、SSL証明書ファイルを取得できます。

sudo certbot certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/-d example.com -d www.example.com

SSL証明書が正常に取得されると、certbotは次の情報を出力します。

IMPORTANT NOTES:- Congratulations! Your certificate and chain have been saved at:/etc/letsencrypt/live/example.com/fullchain.pem
 Your key file has been saved at:/etc/letsencrypt/live/example.com/privkey.pem
 Your cert will expire on 2020-10-06. To obtain a newor tweaked
 version ofthis certificate in the future, simply run certbot
 again. To non-interactively renew *all*of your certificates, run
 " certbot renew"- Your account credentials have been saved in your Certbot
 configuration directory at /etc/letsencrypt. You should make a
 secure backup ofthis folder now. This configuration directory will
 also contain certificates and private keys obtained by Certbot so
 making regular backups ofthis folder is ideal.- If you like Certbot, please consider supporting our work by:

 Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 Donating to EFF:                    https://eff.org/donate-le

証明書ファイルができたので、ドメイン名の仮想ホストディレクトリを次のように編集します: / etc / apache2 / sites-available / example.com.conf

< VirtualHost *:80> 
 ServerName mail.digital.mk

 Redirect permanent / https://mail.digital.mk/</VirtualHost><VirtualHost *:443>
 ServerName mail.digital.mk

 Protocols h2 http:/1.1<If "%{HTTP_HOST} == 'www.mail.digital.mk'">
 Redirect permanent / https://mail.digital.mk/</If>

 DocumentRoot /var/www/mail.digital.mk/public_html
 ErrorLog ${APACHE_LOG_DIR}/mail.digital.mk-error.log
 CustomLog ${APACHE_LOG_DIR}/mail.digital.mk-access.log combined

 SSLEngine On
 SSLCertificateFile /etc/letsencrypt/live/mail.digital.mk/fullchain.pem
 SSLCertificateKeyFile /etc/letsencrypt/live/mail.digital.mk/privkey.pem

 # Other Apache Configuration

< /VirtualHost>

上記の構成では、HTTPSを強制的に使用し、wwwをwww以外のバージョンに強制的に切り替えます。必要に応じて、構成ファイルを自由に変更できます。

Apache構成をリロードして、変更を有効にします。

sudo systemctl reload apache2

これで、 https://を使用してWebサイトを開くことができ、緑色のロックアイコンが表示されます。

[SSL Labs Server Test](https://www.ssllabs.com/ssltest/)を使用してドメイン名をテストすると、次のようなA +レベルが得られます。

5.SSL証明書を自動的に更新しましょう##

Let'sEncryptの証明書は90日間のみ有効です。有効期限が切れる前に証明書を自動的に更新するには、1日に2回実行されるcronジョブを作成し、証明書の有効期限が切れる約30日前に証明書を更新する必要があります。

証明書が更新されたら、Apacheサービスをリロードする必要があります。 --renew-hook&quot; systemctl reloadapache2 &quot;/ etc / cron.d / certbotファイルに追加します。これは次のようになります。

次のコマンドを実行して、新しいcronjobを作成します。これにより、証明書が更新され、Apacheが再起動されます。

0* /12*** root test -x /usr/bin/certbot -a \!-d /run/systemd/system && perl -e 'sleep int(rand(3600))'&& certbot -q renew --renew-hook "systemctl reload apache2"

更新プロセスをテストするには、 --dry-runオプションを指定してcertbotコマンドを使用します。

sudo certbot renew --dry-run

エラーメッセージがない場合は、更新プロセスが成功したことを意味します。

6、要約##

このガイドでは、Ubuntu20.04でLet'sEncryptクライアントcertbotを使用して、ドメイン名のSSL証明書を取得する方法について説明しました。

SSL証明書を使用するようにApacheを構成し、証明書を自動的に更新するcronjobを設定する方法を示しました。

Certbotスクリプトの詳細については、[Certbot公式ドキュメント](https://certbot.eff.org/docs/)を参照してください。

Recommended Posts

Ubuntu20.04でLet&#39;sEncryptを使用してApacheを保護する
Ubuntu16.04でLet&#39;sEncryptを使用してApacheを保護する方法
CentOS8でLet&#39;sEncryptを使用してApacheを保護する
Let&#39;sEncryptを使用してCentOS8でNginxを保護する方法
Ubuntu20.04にApacheをインストールする方法
Ubuntu20.04にApacheをインストールする方法
Ubuntu18.04にApacheKafkaをインストールする方法
Ubuntu20.04にApacheMavenをインストールする方法
Ubuntu16.04にApacheTomcat8をインストールする方法
Ubuntu14.04でRancherを使用してJenkinsを管理する方法
UbuntuでPython3を楽しくプレイする方法
ubuntuのランプ
UbuntuはApacheを構成します
Ubuntu14.04でApacheコンテンツキャッシングを構成する方法
Ubuntu14.04でHexoを使用してブログを開始する方法
UbuntuにRedisをインストールする
ubuntu20にR4をインストールします
Ubuntu18.04にnvtopをインストールします
Ubuntu18.04にpostgresql-10をインストールします
Ubuntuにdockerをインストールする
ubuntu18.04にDockerをインストールします
Ubuntu16にnodejs10をインストールします
Ubuntu14.04にmysqlをインストールします
UbuntuにDjangoをインストールします
Ubuntu16.04にPytorch + CUDAをインストールします
Ubuntu14.04にPython3をインストールします
Ubuntuを使い始める
Ubuntu18にrJavaをインストールします
UbuntuにJDK10 +をインストールする
Ubuntu16.04にPython3をインストールします
ROS学習--- UbuntuにROSをインストールする
Ubuntu16.04.2にKDEをインストールします
Ubuntu18にDockerをインストールする
UbuntuにPython3.7をインストールする
Ubuntuにflashplayerをインストールする
Ubuntu14.04でUFWを使用してファイアウォールを設定する方法
Ubuntuシステムを搭載したMacにVM仮想マシンをインストールする
Ubuntu16.04でApache仮想ホストを設定する方法
Ubuntu20.04でApache仮想ホストを設定する方法
Ubuntu14.04でNginxを使用してパスワード認証を設定する方法
[クイックスタート] Ubuntu18.04にApacheWebサーバーをインストールする方法