開発運用

Debian 10 Certbot SSL 設定

Let’s Encryptは、無料で信頼性の高いSSL/TLS証明書を提供するサービスであり、ウェブサイトのセキュリティを強化するために広く使用されています。Certbotは、Let’s Encryptから証明書を簡単に取得し、管理するための公式クライアントです。このガイドでは、Debian 10(Buster)において、Certbotの「独立モード」を使用してLet’s EncryptのSSL証明書を取得する方法を完全かつ包括的に説明します。

前提条件

このガイドを進めるにあたり、以下の条件を満たしている必要があります:

  • Debian 10(Buster)にSSHでアクセスできる。
  • root または sudo 権限を持つユーザーアカウントがある。
  • ウェブサーバー(ApacheやNginxなど)がインストールされており、インターネット経由でアクセス可能なドメイン名が設定されている。
  • 必要なポート(HTTPの80番、HTTPSの443番)が開いている。

1. Certbotのインストール

まず、Debianの公式パッケージリポジトリからCertbotをインストールします。

ステップ1: パッケージリストの更新

まず、パッケージリストを最新の状態に更新します。

bash
sudo apt update

ステップ2: 必要なパッケージのインストール

次に、Certbotをインストールするために、certbotパッケージをインストールします。

bash
sudo apt install certbot

これで、certbotコマンドがシステムにインストールされます。

2. 独立モードの使用

独立モードは、ウェブサーバーの設定を変更せずに、HTTP-01チャレンジを使用して証明書を取得する方法です。この方法では、Certbotが自動的に証明書を発行し、指定された場所にファイルを配置します。ウェブサーバーの設定を手動で行う必要があります。

ステップ1: Certbotによる証明書の取得

次に、独立モードで証明書を取得します。以下のコマンドを実行してください。example.comは実際のドメイン名に置き換えてください。

bash
sudo certbot certonly --standalone -d example.com
  • --standaloneオプションは、Certbotが独立モードで動作することを指示します。このモードでは、CertbotがHTTPサーバーを一時的に起動し、Let’s Encryptの認証サーバーと通信して証明書を取得します。
  • -dオプションには、証明書を取得したいドメイン名を指定します。複数のドメインに対応する証明書を取得する場合は、-dオプションを繰り返し指定できます。

このコマンドを実行すると、Certbotがウェブサーバーを一時的に起動し、Let’s Encryptから証明書を取得します。

ステップ2: 認証プロセスの完了

Certbotは、ドメイン所有権を確認するために一時的にHTTPサーバーを立ち上げます。このプロセスが完了すると、証明書が/etc/letsencrypt/live/example.com/ディレクトリに保存されます。

証明書ファイルのパスは以下の通りです:

  • fullchain.pem: サーバー証明書と中間証明書が含まれるフル証明書。
  • privkey.pem: 秘密鍵。

3. 証明書の手動設定

Certbotによって証明書が取得されると、次にウェブサーバーの設定を手動で行う必要があります。ここでは、ApacheとNginxの両方の設定方法を説明します。

Apacheの設定

Apacheを使用している場合、ssl.confファイルを編集してSSL証明書を設定します。

  1. Apacheの設定ファイルを開きます。
bash
sudo nano /etc/apache2/sites-available/default-ssl.conf
  1. 以下のように、SSLCertificateFileSSLCertificateKeyFileのディレクティブを設定します。example.comを実際のドメイン名に変更してください。
apache
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
  1. 設定を保存して閉じた後、SSLモジュールを有効にし、サイトを有効にします。
bash
sudo a2enmod ssl sudo a2ensite default-ssl sudo systemctl reload apache2

Nginxの設定

Nginxを使用している場合、SSL証明書を設定するには、Nginxの設定ファイルを編集します。

  1. Nginxの設定ファイルを開きます。
bash
sudo nano /etc/nginx/sites-available/default
  1. サーバーブロックに以下のように設定を追加します。
nginx
server { listen 443 ssl; server_name example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # その他の設定... }
  1. 設定を保存して閉じた後、Nginxを再起動します。
bash
sudo systemctl restart nginx

4. 自動更新の設定

Let’s Encryptの証明書は90日間有効です。証明書が期限切れになる前に、自動的に更新されるように設定することが重要です。Certbotは自動更新をサポートしており、cronまたはsystemdを使用して定期的に証明書を更新できます。

ステップ1: 自動更新の確認

Certbotには、デフォルトで証明書を自動的に更新するスケジュールが設定されています。systemdを使用している場合、certbot.timerが設定されています。以下のコマンドで、タイマーが正しく設定されているか確認できます。

bash
sudo systemctl list-timers | grep certbot

ステップ2: 手動で更新の確認

手動で更新を確認する場合、次のコマンドを使用して証明書の更新を実行できます。

bash
sudo certbot renew --dry-run

--dry-runオプションは、実際に更新を行う前にテストとして更新プロセスが正常に機能するか確認するためのものです。

5. トラブルシューティング

Certbotの実行中に問題が発生した場合は、以下のコマンドを使用してログを確認できます。

bash
sudo less /var/log/letsencrypt/letsencrypt.log

一般的な問題としては、ポート80と443が閉じている場合や、DNS設定が間違っている場合が考えられます。これらを確認し、再度証明書の取得を試みてください。

結論

このガイドでは、Debian 10におけるCertbotの「独立モード」を使用してLet’s EncryptのSSL証明書を取得する方法を説明しました。証明書のインストールとウェブサーバーの設定を手動で行う必要がありますが、Let’s Encryptの無料証明書を使うことで、ウェブサイトのセキュリティを向上させることができます。証明書の自動更新も設定することで、今後の管理も簡単になります。

Back to top button