開発者ドキュメント

CentOS8でLet’sEncryptを使用してApacheを保護する方法

序章

Let’s Encryptは、無料の TLS / SSL証明書の取得とインストールを容易にする認証局(CA)であり、これによりWebサーバーで暗号化されたHTTPSを有効にします。 Certbot などのクライアントと連携してプロセスを簡素化し、必要な手順を自動化します。

このチュートリアルでは、Certbotを使用して、CentOS8上のApacheWebサーバーでTLS/SSL証明書を設定します。 さらに、cronジョブを使用して証明書の更新プロセスを自動化します。これについては、Cronを使用してCentOS8でタスクを自動化する方法を参照してください。

前提条件

このガイドを完了するには、次のものが必要です。

これらの前提条件をすべて完了したら、Certbotクライアントソフトウェアのインストールに進みます。

ステップ1— CertbotLet’sEncryptクライアントのインストール

Let’s Encryptを使用してSSL証明書を取得するには、最初にCertbotと mod_ssl 、SSLv3暗号化のサポートを提供するApacheモジュールをインストールする必要があります。

The certbot パッケージは、デフォルトではパッケージマネージャーからは利用できません。 Certbotをインストールするには、EPELリポジトリを有効にする必要があります。

CentOS 8 EPELリポジトリを追加するには、次のコマンドを実行します。

  1. sudo dnf install epel-release

リポジトリにアクセスできるようになったので、必要なすべてのパッケージをインストールします。

  1. sudo dnf install certbot python3-certbot-apache mod_ssl

これらのサービスをインストールすると、Certbotを実行して証明書を取得する準備が整います。

ステップ2—証明書を取得する

Certbotがインストールされたので、それを使用してドメインのSSL証明書を要求できます。

を使用して certbot クライアントを暗号化してApacheのSSL証明書を生成して、プロセスの多くのステップを自動化しましょう。 クライアントは、パラメータとして指定したドメインに有効な新しいSSL証明書を自動的に取得してインストールします。

インタラクティブインストールを実行し、単一のドメインのみをカバーする証明書を取得するには、 certbot 次のコマンド:

  1. sudo certbot --apache -d example.com

これは実行されます certbot とともに --apache プラグインを使用して、証明書を構成するドメインを指定します。 -d 国旗。

複数のドメインまたはサブドメインに有効な単一の証明書をインストールする場合は、それらを追加のパラメーターとしてコマンドに渡し、新しい各ドメインまたはサブドメインにタグを付けることができます。 -d 国旗。 パラメータリストの最初のドメイン名は、Let’sEncryptが証明書を作成するために使用するbaseドメインになります。 このため、リストの最初にベースドメイン名を渡し、その後に追加のサブドメインまたはエイリアスを渡します。

  1. sudo certbot --apache -d example.com -d www.example.com

この例のベースドメインは example.com.

The certbot ユーティリティは、既存のApache構成に基づいてドメインを選択するように求めることもできます。 この機能を使用するには、 certbot ドメインが指定されていない場合:

  1. sudo certbot --apache

プログラムは、証明書オプションをカスタマイズするためのステップバイステップガイドを提供します。 紛失したキーの回復と通知用の電子メールアドレスを提供するように求められ、次に利用規約に同意するように求められます。 コマンドラインでドメインを指定しなかった場合は、その入力も求められます。 仮想ホストファイルでドメインが指定されていない場合は、 ServerName ディレクティブでは、仮想ホストファイルを選択するように求められます。

インストールが正常に完了すると、次のようなメッセージが表示されます。

Output
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-09-24. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. 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 of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this 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/letsencrypt/live ディレクトリ。

証明書がダウンロード、インストール、およびロードされたので、SSL証明書のステータスをチェックして、すべてが機能していることを確認できます。

ステップ3—証明書とSSL構成をテストする

この時点で、クラウドセキュリティ会社 QualysSSLサーバーテストを使用して、CertbotがSSL証明書を正しく作成したことを確認できます。

お好みのウェブブラウザで次のリンクを開き、置き換えます example.com あなたのドメインで:

https://www.ssllabs.com/ssltest/analyze.html?d=example.com

サーバーへのSSL接続のテストをすぐに開始するページが表示されます。

テストの実行が開始されると、完了するまでに数分かかる場合があります。 テストのステータスはブラウザで更新されます。

テストが終了すると、サーバーの構成のセキュリティと品質を評価するレターグレードがページに表示されます。 この記事の執筆時点では、デフォルト設定はAの評価を与えます。

SSL Labsがこれらの評価を決定する方法の詳細については、 SSL Labsの評価投稿で、2018年1月に評価スキームに加えられた更新の詳細を確認してください。

を使用してWebサイトをリロードしてみてください https:// ブラウザのセキュリティインジケータに注目してください。 これで、サイトが適切に保護されていることが示され、通常は鍵のアイコンが表示されます。

SSL証明書をインストールして検証したら、次のステップは、証明書の自動更新を設定して、証明書を有効に保つことです。

ステップ4—自動更新の設定

Let’s Encryptの証明書は90日間有効ですが、失効やその他の問題が発生した場合に備えて、更新を1日2回確認することをお勧めします。 このため、このプロセスを自動化することがベストプラクティスです。

まず、証明書を更新するために使用するコマンドを調べてみましょう。 The certbot Let’sEncryptクライアントには renew 現在インストールされている証明書を自動的にチェックし、有効期限から30日以内の場合は更新を試みるコマンド。 を使用して --dry-run オプションで、このタスクのシミュレーションを実行して、方法をテストできます。 renew 作品:

  1. sudo certbot renew --dry-run

出力は次のようになります。

Output
Saving debug log to /var/log/letsencrypt/letsencrypt.log - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Processing /etc/letsencrypt/renewal/example.com.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Cert not due for renewal, but simulating renewal for dry run Plugins selected: Authenticator apache, Installer apache Starting new HTTPS connection (1): acme-staging-v02.api.letsencrypt.org Renewing an existing certificate Performing the following challenges: http-01 challenge for example.com http-01 challenge for www.example.com Waiting for verification... Cleaning up challenges Resetting dropped connection: acme-staging-v02.api.letsencrypt.org - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - new certificate deployed with reload of apache server; fullchain is /etc/letsencrypt/live/example.com/fullchain.pem - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ** DRY RUN: simulating 'certbot renew' close to cert expiry ** (The test certificates below have not been saved.) Congratulations, all renewals succeeded. The following certs have been renewed: /etc/letsencrypt/live/example.com/fullchain.pem (success) ...

複数のドメインでバンドルされた証明書を作成した場合、ベースドメイン名のみが出力に表示されますが、更新はこの証明書に含まれるすべてのドメインに対して有効であることに注意してください。

証明書が古くならないようにするための実用的な方法は、自動更新コマンドを定期的に実行するcronジョブを作成することです。

公式のCertbotドキュメントは実行することを推奨しています cron 1日2回。 これにより、Let’s Encryptが証明書の失効を開始した場合、Certbotが証明書を更新するまでに半日以内になります。 ドキュメントでは、次のコマンドを使用して適切なコマンドを追加することを提案しています cron に仕事 /etc/crontab crontabファイル:

  1. echo "0 0,12 * * * root python3 -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew -q" | sudo tee -a /etc/crontab > /dev/null

これにより、毎日正午と深夜に実行される新しいcronジョブが作成されます(0 0,12 * * *). その後、ショートを実行します python3 スクリプト。0〜60分のランダムな期間一時停止します。 Let’s Encryptのサーバーの負荷を軽減するために、これをお勧めします。

Pythonスクリプトが終了した後、実際の certbot renew コマンドが実行されます。

cronジョブを作成およびスケジュールする方法の詳細については、Cronを使用してCentOS8でタスクを自動化する方法ガイドを確認してください。 更新の詳細については、Certbotのドキュメントを参照してください。

結論

このガイドでは、Let’s Encrypt Certbotクライアントをインストールし、ドメインのSSL証明書をダウンロードし、証明書の自動更新を設定しました。 Certbotの使用について質問がある場合は、Certbotの公式ドキュメントを確認してください。 また、公式の Let’s Encryptブログで、重要な更新を随時確認することをお勧めします。

モバイルバージョンを終了