CentOS 8 で Lets Encrypt SSL 証明書を使用して Apache を保護する
Web サーバーのセキュリティを確保することは、Web サイトを公開する前に常に考慮すべき重要な要素の 1 つです。セキュリティ証明書は、Web ブラウザから Web サーバーに送信されるトラフィックを保護するために重要です。これにより、送信されるトラフィックが保護されていることを十分に認識した上で、ユーザーが Web サイトとデータを交換するようになります。
ほとんどの場合、セキュリティ証明書の料金は支払われ、毎年更新されます。 Let’s Encrypt 証明書は、サイトの暗号化に使用できる無料のオープンな自動認証局です。証明書は 90 日ごとに期限切れになり、完全に無料で自動更新されます。
推奨読書: CentOS 8 で Let's Encrypt を使用して Nginx を保護する方法
この記事では、Apache Web サーバーの Certbot を使用して Let's Encrypt 証明書をインストールし、後で証明書を構成する方法を説明します。 CentOS 8 では自動的に更新されます。
前提条件
始める前に、次のものが整っていることを確認してください。
1. Apache HTTP Web サーバーがインストールされ実行されている CentOS 8 サーバーのインスタンス。 Apache Web サーバーが稼働していることを確認できます。
sudo dnf install httpd
sudo systemctl status httpd
2. DNS Web ホスティング プロバイダー上の Web サーバーのパブリック IP アドレスを指す完全修飾ドメイン名 (FQDN)。このガイドでは、サーバーの IP 34.67.63.136
を指す linuxtechwhiz.info
を使用します。
ステップ 1. CentOS 8 に Certbot をインストールする
Certbot は、セキュリティ証明書のインストールを自動化するクライアントです。 Let’s encrypt 機関から証明書を取得し、それほど手間をかけずに Web サーバーに展開します。
Certbot は完全に無料で、Web サーバーの構成に基づいて手順を生成することで、対話型の方法で証明書をインストールできます。
certbot をダウンロードする前に、まず、暗号化された接続の構成に必要なパッケージをインストールします。
まず、RHEL ベースのシステムに高品質の追加パッケージを提供するEPEL リポジトリをインストールします。
sudo dnf install epel-release
次に、mod_ssl パッケージと openssl パッケージをインストールします。
sudo dnf install mod_ssl openssl
すべての依存関係がインストールされたら、Certbot と Certbot 用のApache モジュールをインストールします。
sudo dnf install certbot python3-certbot-apache
このコマンドは、Certbot、Certbot 用の Apache モジュール、およびその他の依存関係をインストールします。
ステップ 2: Apache 仮想ホストを作成する
次のステップでは、ドメインの仮想ホスト ファイル linuxtechwhiz.info
を作成します。まず、HTML ファイルを配置するドキュメント ルートを作成します。
sudo mkdir /var/www/linuxtechwhiz.info.conf
以下に示すように、テスト用の index.html
ファイルを作成します。
sudo echo “<h1>Welcome to Apache HTTP server</h1>” > /var/www/linuxtechwhiz.info/index.html
次に、図に示すように仮想ホスト ファイルを作成します。
sudo vim /etc/httpd/conf.d/linuxtechwhiz.info
以下の設定を追加します。
<VirtualHost *:443>
ServerName linuxtechwhiz.info
ServerAlias www.linuxtechwhiz.info
DocumentRoot /var/www/linuxtechwhiz.info/
<Directory /var/www/linuxtechwhiz.info/>
Options -Indexes +FollowSymLinks
AllowOverride All
</Directory>
ErrorLog /var/log/httpd/www.linuxtechwhiz.info-error.log
CustomLog /var/log/httpd/www.linuxtechwhiz.info-access.log combined
</VirtualHost>
保存して終了。
図のように権限をドキュメント ルートに割り当てます。
sudo chown -R apache:apache /var/www/linuxtechwhiz.info
変更を有効にするには、Apache サービスを再起動します。
sudo systemctl restart httpd
ステップ 3: CentOS 8 に Let’s Encrypt SSL 証明書をインストールする
ここで、図のように certbot を実行して、Let’s Encrypt 証明書のインストールを開始します。
sudo certbot --apache -d domain.com
私たちの場合、これは次のようになります。
sudo certbot --apache -d linuxtechwhiz.info
このコマンドを実行すると、一連のプロンプトが表示され、ドメインの Lets Encrypt を構成できるようになります。必ず電子メール アドレスを入力し、利用規約に同意し、HTTP の暗号化バージョンである HTTPS プロトコルを使用するドメイン名を指定してください。
すべてがうまくいけば、最後に、Let’s Encrypt 証明書を使用してサイトが保護されたことを知らせるお祝いのメッセージが表示されます。証明書の有効性も表示されます。これは通常、展開後90日後に表示されます。
次に、仮想ホスト ファイルに戻り、次の構成行を追加します。
SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/linuxtechwhiz.info/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/linuxtechwhiz.info/privkey.pem
保存して終了。
最終的な Apache 仮想ホスト構成は次のようになります。
<VirtualHost *:443>
ServerName linuxtechwhiz.info
ServerAlias www.linuxtechwhiz.info
DocumentRoot /var/www/linuxtechwhiz.info/
<Directory /var/www/linuxtechwhiz.info/>
Options -Indexes +FollowSymLinks
AllowOverride All
</Directory>
ErrorLog /var/log/httpd/www.linuxtechwhiz.info-error.log
CustomLog /var/log/httpd/www.linuxtechwhiz.info-access.log combined
SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/linuxtechwhiz.info/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/linuxtechwhiz.info/privkey.pem
</VirtualHost>
もう一度、Apacheを再起動します。
sudo systemctl restart httpd
ステップ 4: Let’s Encrypt SSL 証明書の検証
すべてが動作していることを確認するには、ブラウザを起動してサーバーの IP アドレスにアクセスします。 URL の先頭に南京錠の記号が表示されるはずです。
詳細を確認するには、南京錠記号をクリックし、表示されるプルダウン メニューの [証明書] オプションをクリックします。
証明書の詳細が次のポップアップ ウィンドウに表示されます。
また、https://www.ssllabs.com/ssltest/
でサーバーをテストすると、サイトは図に示すように 「A」
グレードを取得するはずです。
ステップ 5: Let’s Encrypt SSL 証明書の自動更新
Let’s Encrypt は 90 日間のみ有効です。通常、更新プロセスは、更新スクリプトを /etc/cron.d ディレクトリに追加する certbot パッケージによって実行されます。このスクリプトは毎日 2 回実行され、有効期限が切れてから30 日以内に証明書を自動的に更新します。
自動更新プロセスをテストするには、certbot を使用してドライラン テストを実施します。
sudo /usr/local/bin/certbot-auto renew --dry-run
エラーが発生しなかった場合は、問題なく実行できることを意味します。
これでこのガイドは終わりになります。このガイドでは、certbot を使用して、CentOS 8 システムで実行されている Apache Web サーバーに Let’s Encrypt 証明書 をインストールして構成する方法を説明しました。