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.',)
以下を参考に試すが、うまくいかず。
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