サイトアイコン IT NEWS

Certbotを使用してSSL証明書を取得する際のトラブルと解決方法

ウェブサイトやAPIの安全性を磨くためにSSL証明書の設定は必須です。
この記事では、ApacheCertbotを使用しSSL証明書を取得する際に発生する主要な問題とその解決方法を解説します。

問題の説明

Certbotを使ってSSL証明書を取得しようとした際に、次の問題が発生しました。

Certbot実行コマンド

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

エラーログ

Certbot failed to authenticate some domains (authenticator: webroot). The Certificate Authority reported these problems:
  Domain: example.com
  Type:   unauthorized
  Detail: Invalid response from http://example.com/.well-known/acme-challenge/XXXX: 401

主な原因は、Apacheがプロキシ設定を通じてNode.jsサーバーをバックエンドとしているためです。
このためCertbotが証明書の所有権証明に必要なファイルの提供に失敗しました。

解決方法

Certbotが正常にチャレンジファイルを読み込めるように、一時的にプロキシを無効化します。
この際には次の手順を実行しましょう。

1. Apacheの設定の一時変更

SSL証明書の指定をコメントアウトして、Apacheを再起動します。

設定ファイル: /etc/apache2/sites-enabled/default-ssl.conf

# SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
# SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
# SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem

設定内容の確認と再起動をします。

sudo apache2ctl configtest
sudo systemctl restart apache2

2. Certbotの実行

Apacheが正常に動作したら、Certbotを実行します。

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

正常に証明書が取得できたら、SSL証明書を設定に戻します。

3. SSL証明書設定の復元

コメントアウトした設定を元に戻し、Apacheを再起動します。

SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
sudo apache2ctl configtest
sudo systemctl restart apache2

4. チェック

SSLが正常に動作しているかをチェックします。

sudo openssl s_client -connect example.com:443

まとめ

この記事では、ApacheCertbotを使用してSSL証明書を取得する際に直面する問題とその解決方法を詳しく解説しました。
主なポイントとして以下が挙げられます。

  • Certbotのエラーが発生する原因は、Apacheのプロキシ設定がCertbotによる所有権確認を妨げている場合が多いこと
  • 問題解決には、Apache設定を一時的に変更し、Certbotが正常にチャレンジファイルを提供できるようにすることが必要
  • SSL証明書を取得した後は、元の設定を復元し、セキュリティを保つことが重要

これらの手順を実行することで、スムーズにSSL証明書を取得し、安全な通信環境を構築できます。
CertbotとApacheの設定は正確さが求められるため、この記事を参考に慎重に対応してください。

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