🔐

【certbot】HTTP-01チャレンジの手動実行

に公開

手順1:ターミナルを2つ起動しておく

手動実行にはターミナルが2つ必要なので起動しておいてください。

手順2:片方のターミナルで手動実行用のコマンドを実行

片方のターミナルで下記を実行。

sudo certbot certonly --manual --preferred-challenges http -d {ドメイン}

certonly:証明書の取得のみでnginxなどの設定ファイルの更新はしない(手動実行の時はこれのみ)
--manual:認証プロセスを手動でやることを指定
--preferred-challenges http:認証方法にHTTP-01を使うことを明示(一応つけてる)

手順3:もう片方のターミナルで認証用ファイルを作成

手順2のコマンドを実行すると下記のような文章が表示されるので表示に従い認証用のファイルをもう片方のターミナルで作成。

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Requesting a certificate for {ドメイン}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Create a file containing just this data:

{文字列A}.{文字列B}

And make it available on your web server at this URL:

http://{ドメイン}/.well-known/acme-challenge/{文字列A}

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue

要はドメイン直下に.well-known/acme-challenge/{文字列A}というディレクトリ&ファイルを作成し、ファイルの中身を{文字列A}.{文字列B}にすればOKです。

用意ができたら手順2のターミナルでEnterを押してください。手順3で作成した認証用ファイルに問題がなければSuccessfully ~~~となって成功です。

ただし現時点ではnginxなどの設定ファイルは自動更新されていませんので、その後sudo certbot --nginxで設定ファイルを更新してください。

なぜこれをやる必要があったのか?

普通にやればcertbotが自動で認証用ファイルを作成・削除してくれるので手動でやる必要はないです。

なのですが今回自動でやろうとしたときに認証用ファイルへのリクエストが404となってしまい、そもそも認証用ファイルが生成されていたのかを確認したかったのですが、certbotがチャレンジ後に自動でファイルを削除してしまうため、チャレンジの時に本当にファイルはあったのか無かったのか判断が付かず、手動実行したい欲求が生まれました。

結果としては私がnginxのserver_nameをミスっていただけだったんですが笑
せっかくなので備忘録として残させていただきました🙇‍♂️

Discussion