Let's Encryptで更新エラー

KUSANAGIで作ったプロファイル(サービス=サイト)以外で、静的HTMLファイルを置いて表示しているだけのドメインがSSLサーバー証明書の更新に失敗していた。

解決方法としては、SSL証明書を削除して再取得したらうまくいった。

Let's Encryptからの更新切れ20日前通知

Let's Encryptで取得したSSLサーバー証明書の有効期限切れの20日前になると、メール通知がくる(設定している場合のみ)。

この通知のおかげで、SSLサーバー証明が更新できていないことが判明した。

Let's Encryptの設定

ここに書かれたとおりに設定。丁寧で非常にわかりやすく、どこもハマらなかった。

さくらのナレッジ - Let’s EncryptのSSL証明書で、安全なウェブサイトを公開

Let's Encryptの更新エラー

現在KUSANAGIで作って運営しているドメインが、以下3つある。
- https://tanebox.com <- KUSANAGIプロファイル外に静的HTMLファイル置いてる
- https://blog.tanebox.com <- KUSANAGIのプロファイル(blog)で作った
- https://keyboards.tanebox.com <- KUSANAGIのプロファイル(keyboards)で作った

KUSANAGIコマンドで作ったものはちゃんとSSLサーバー証明書が更新されていたが、さくらのナレッジを参考に設定したものだけ、cronでの更新がうまく動かなかった。(さくらのナレッジに書かれた内容に間違いはなかったので、おそらく自分がどこかでミスしていたっぽい)

更新エラーの内容

# certbot-auto renew
The error was: PluginError('An authentication script must be provided with --manual-auth-hook when using the manual plugin non-interactively.',)

以下を参考に試すが、うまくいかず。

Let’s EncriptのSSL証明書自動更新でこけた話

SSLサーバー証明書の削除

以下を参考に実行。

Let’s encrypt の証明書を失効させ、ドメインの設定を削除する

# certbot-auto delete -d tanebox.com

このときに、tanebox.comだけを削除したかったので、該当するドメインの番号を指定して実行したが、うまくいかず。(メッセージはメモしていなかったため、内容は失念)

再度実行して、なにも入力せずにEnterを押したら、SSLサーバー証明書がすべて削除されてしまった。
「# ls -l /etc/letsencrypt/live/」で調べると、ファイルが見事にすべて削除済み。

なので、deleteから抜けたい場合は、絶対に未入力でEnterは押さず、Cancel(c)を押すこと。

SSLサーバー証明書の再取得

さくらのナレッジを参考に、すべて再取得を実行。
KUSANAGIコマンドの、「# kusanagi ssl [プロファイル名]」が「完了」と表示されるものの、なにも作成されておらず、よくわからなかったので、そのままドメイン分、すべて再取得。
(前やったときはうまく実行できたはずなので、理由は不明)

SSLサーバー証明の更新チェック

cartbot-autoコマンドのdry-runオプションで、SSLサーバー証明の更新シミュレーションを実行。このオプションがあるので事前にテストができる。

# certbot-auto renew --dry-run
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/tanebox.com.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cert not due for renewal, but simulating renewal for dry run
Plugins selected: Authenticator webroot, Installer None
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for tanebox.com
Waiting for verification...
Cleaning up challenges

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
new certificate deployed without reload, fullchain is
/etc/letsencrypt/live/tanebox.com/fullchain.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/blog.tanebox.com.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cert not due for renewal, but simulating renewal for dry run
Plugins selected: Authenticator webroot, Installer None
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for blog.tanebox.com
Waiting for verification...
Cleaning up challenges

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
new certificate deployed without reload, fullchain is
/etc/letsencrypt/live/blog.tanebox.com/fullchain.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/keyboards.tanebox.com.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cert not due for renewal, but simulating renewal for dry run
Plugins selected: Authenticator webroot, Installer None
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for keyboards.tanebox.com
Waiting for verification...
Cleaning up challenges

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
new certificate deployed without reload, fullchain is
/etc/letsencrypt/live/keyboards.tanebox.com/fullchain.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
** DRY RUN: simulating 'certbot renew' close to cert expiry
**          (The test certificates below have not been saved.)

Congratulations, all renewals succeeded. The following certs have been renewed:
  /etc/letsencrypt/live/tanebox.com/fullchain.pem (success)
  /etc/letsencrypt/live/blog.tanebox.com/fullchain.pem (success)
  /etc/letsencrypt/live/keyboards.tanebox.com/fullchain.pem (success)
** DRY RUN: simulating 'certbot renew' close to cert expiry
**          (The test certificates above have not been saved.)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

うまくいった。

nginxの再起動

念のためnginxの構文チェックする。万が一、ミスしていると再起動不可になるので、設定変えたときは必ず実行する。

# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

問題ないので再起動して完了。

# nginx -s reload