SSL証明書の更新手順(Let's Encrypt)

SSL証明書の更新手順(Let's Encrypt)

記事の文字数:2537

Let's EncryptのSSL証明書は無料で利用できる便利なサービスですが、有効期限が90日間と短いため、定期的な更新が必要です。本記事では、Certbotを使用してSSL証明書を更新する方法を詳しく解説します。standaloneモードとwebrootモードの違いや、それぞれの適切な利用シーン、証明書の自動更新設定、トラブルシューティングの手順まで網羅的に解説します。


スポンサーリンク

Let’s Encryptは無料でSSL/TLS証明書を提供する認証局であり、多くのウェブサイトで使用されています。Let’s Encryptの証明書は90日間の有効期限があり、期限が切れる前に更新を行う必要があります。証明書の更新を怠ると、サイト訪問者に「安全ではない」と表示される可能性があり、SEOにも悪影響を及ぼすことがあります。本記事では、Certbotを使用して証明書を更新する方法について、詳細な手順を解説します。

Certbotを使用した証明書の更新

Let’s Encryptの証明書を取得する際に一般的に使用されるのがCertbotです。Certbotを利用することで、手動で証明書を更新することも、自動更新を設定することも可能です。

1. Certbotのインストール確認

まず、Certbotがインストールされているかどうかを確認しましょう。

Terminal window
certbot --version

インストールされていない場合は、以下のコマンドでインストールします。

Ubuntu/Debian系

UbuntuなどDebian系のOSを使用している場合は、次のコマンドを使用します。

Terminal window
sudo apt update
sudo apt install certbot python3-certbot-nginx

RedHat/CentOS系

CentOSなどのRed Hat系OSを使用している場合は、次のコマンドを使用します。

Terminal window
sudo yum install certbot python3-certbot-nginx

また、Apacheを使用している場合は、python3-certbot-apache パッケージをインストールしてください。

2. 証明書の更新

テスト更新

証明書のテスト更新を行いたい場合は、以下のコマンドを使用します。

Terminal window
sudo certbot renew --dry-run

このコマンドは実際の証明書を更新するのではなく、Let’s Encryptのテスト環境を使用して更新プロセスが正しく動作するかを確認します。エラーが発生した場合は、修正を行ったうえでcertbot renewを実行してください。

更新

証明書の更新は以下のコマンドで実行できます。

Terminal window
sudo certbot renew

このコマンドは、既存の証明書の有効期限を確認し、必要であれば自動的に更新します。

手動で特定のドメインの証明書を更新したい場合は、次のように実行します。

Terminal window
sudo certbot certonly --force-renewal -d example.com

このコマンドでは、example.com の証明書のみを強制的に更新します。

Standaloneモード

standalone モードは、Certbotが独自のウェブサーバーを一時的に起動し、Let’s Encryptの認証を処理する方式です。Webサーバーが実行されていない環境や、特定のポートをCertbot専用に確保できる場合に適しています。

Terminal window
sudo certbot certonly --standalone -d example.com

注意: standalone モードを使用する場合、ポート80を開放しておく必要があります。NginxやApacheなどのWebサーバーが実行中の場合は、一時的に停止する必要があります。

Terminal window
sudo systemctl stop nginx
sudo certbot certonly --standalone -d example.com
sudo systemctl start nginx

Webrootモード

webroot モードは、既存のWebサーバーを使用して認証ファイルを特定のディレクトリに配置する方式です。Webサーバーが実行中である必要があります。

Terminal window
sudo certbot certonly --webroot -w /var/www/html -d example.com

この方法では、Certbotが/var/www/html/.well-known/acme-challenge/に認証用のファイルを作成し、Let’s Encryptのサーバーがアクセスできるようにします。Webサーバーのドキュメントルートを適切に指定することが重要です。

3. Webサーバーの再起動

証明書の更新後、変更を反映させるためにWebサーバーを再起動します。

Nginxの場合

Terminal window
sudo systemctl restart nginx

Apacheの場合

Terminal window
sudo systemctl restart apache2

4.証明書の確認

証明書が正しく更新されたかを確認するには、以下のコマンドを実行します。

Terminal window
sudo certbot certificates

このコマンドを実行すると、現在の証明書の有効期限やインストールされている証明書の詳細が表示されます。

証明書の自動更新設定

Let’s Encryptの証明書は有効期限が90日間のため、自動更新を設定しておくと便利です。Certbotにはデフォルトで自動更新機能が備わっていますが、念のためcronジョブまたはsystemdタイマーを利用して更新を確実に行うことを推奨します。

1. cronジョブを設定する

以下のコマンドでcronの設定を開きます。

Terminal window
sudo crontab -e

次の行を追加して、証明書の更新を自動化します(毎日午前3時に実行)。

Terminal window
0 3 * * * /usr/bin/certbot renew --quiet && systemctl reload nginx

Apacheを使用している場合は、systemctl reload apache2 に変更してください。

2. systemdタイマーを利用する

Certbotはsystemdのタイマーを利用して自動更新することも可能です。

Terminal window
sudo systemctl enable certbot.timer

この設定を行うと、Certbotが定期的に実行され、必要に応じて証明書が更新されます。

トラブルシューティング

証明書の更新時にエラーが発生した場合、以下の手順で問題を解決できます。

  1. ポート80と443が開いているか確認する
    Let’s Encryptの認証にはポート80または443が必要です。以下のコマンドでポートが開いているか確認しましょう。

    Terminal window
    sudo netstat -tulnp | grep -E '80|443'
  2. DNS設定を確認する
    ドメインが正しくLet’s Encryptのサーバーに解決されているか確認しましょう。

    Terminal window
    nslookup example.com
  3. Certbotのログを確認する
    エラーの詳細を確認するには、ログファイルをチェックします。

    Terminal window
    sudo cat /var/log/letsencrypt/letsencrypt.log

まとめ

Let’s EncryptのSSL証明書の更新は、Certbotを使えば簡単に行えます。certbot renew コマンドを実行することで手動更新が可能であり、cronジョブやsystemdタイマーを設定することで自動更新も可能です。証明書の有効期限を切らさないように、定期的なチェックを行いましょう。

また、証明書の更新後は必ずWebサーバーを再起動し、新しい証明書が適用されていることを確認してください。証明書の更新に失敗した場合は、エラーメッセージを確認し、ポート設定やDNS設定を見直すことが重要です。
この手順に従えば、Let’s EncryptのSSL証明書をスムーズに更新できます。ぜひ試してみてください!


以上で本記事の解説を終わります。
よいITライフを!
スポンサーリンク
Scroll to Top