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: パッケージリストの更新
まず、パッケージリストを最新の状態に更新します。
bashsudo apt update
ステップ2: 必要なパッケージのインストール
次に、Certbotをインストールするために、certbot
パッケージをインストールします。
bashsudo apt install certbot
これで、certbot
コマンドがシステムにインストールされます。
2. 独立モードの使用
独立モードは、ウェブサーバーの設定を変更せずに、HTTP-01チャレンジを使用して証明書を取得する方法です。この方法では、Certbotが自動的に証明書を発行し、指定された場所にファイルを配置します。ウェブサーバーの設定を手動で行う必要があります。
ステップ1: Certbotによる証明書の取得
次に、独立モードで証明書を取得します。以下のコマンドを実行してください。example.com
は実際のドメイン名に置き換えてください。
bashsudo 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証明書を設定します。
- Apacheの設定ファイルを開きます。
bashsudo nano /etc/apache2/sites-available/default-ssl.conf
- 以下のように、
SSLCertificateFile
とSSLCertificateKeyFile
のディレクティブを設定します。example.com
を実際のドメイン名に変更してください。
apacheSSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
- 設定を保存して閉じた後、SSLモジュールを有効にし、サイトを有効にします。
bashsudo a2enmod ssl sudo a2ensite default-ssl sudo systemctl reload apache2
Nginxの設定
Nginxを使用している場合、SSL証明書を設定するには、Nginxの設定ファイルを編集します。
- Nginxの設定ファイルを開きます。
bashsudo nano /etc/nginx/sites-available/default
- サーバーブロックに以下のように設定を追加します。
nginxserver {
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;
# その他の設定...
}
- 設定を保存して閉じた後、Nginxを再起動します。
bashsudo systemctl restart nginx
4. 自動更新の設定
Let’s Encryptの証明書は90日間有効です。証明書が期限切れになる前に、自動的に更新されるように設定することが重要です。Certbotは自動更新をサポートしており、cron
またはsystemd
を使用して定期的に証明書を更新できます。
ステップ1: 自動更新の確認
Certbotには、デフォルトで証明書を自動的に更新するスケジュールが設定されています。systemd
を使用している場合、certbot.timer
が設定されています。以下のコマンドで、タイマーが正しく設定されているか確認できます。
bashsudo systemctl list-timers | grep certbot
ステップ2: 手動で更新の確認
手動で更新を確認する場合、次のコマンドを使用して証明書の更新を実行できます。
bashsudo certbot renew --dry-run
--dry-run
オプションは、実際に更新を行う前にテストとして更新プロセスが正常に機能するか確認するためのものです。
5. トラブルシューティング
Certbotの実行中に問題が発生した場合は、以下のコマンドを使用してログを確認できます。
bashsudo less /var/log/letsencrypt/letsencrypt.log
一般的な問題としては、ポート80と443が閉じている場合や、DNS設定が間違っている場合が考えられます。これらを確認し、再度証明書の取得を試みてください。
結論
このガイドでは、Debian 10におけるCertbotの「独立モード」を使用してLet’s EncryptのSSL証明書を取得する方法を説明しました。証明書のインストールとウェブサーバーの設定を手動で行う必要がありますが、Let’s Encryptの無料証明書を使うことで、ウェブサイトのセキュリティを向上させることができます。証明書の自動更新も設定することで、今後の管理も簡単になります。