Let’s Encrypt certificate renewalsのメールが来た件
Let’s EncryptよりTLS-SNI-01が廃止されるとのメールが来て対応した時の備忘録。
Contents
メールの内容
Let’s Encryptより「Action required: Let’s Encrypt certificate renewals」の題名の以下のメールが来た。
- 過去60日間にTLS-SNI-01認証を使用して証明書が発行された
- TLS-SNI-01認証は廃止予定
- HTTP-01、DNS-01、TLS-ALPN-01認証に変更する必要がある
- 2019年2月13日に動作しなくなる
- それ以前に発行された証明書は90日間有効
- certbotユーザなら、ここでより多くの情報を見つけることができる(https://community.letsencrypt.org/t/how-to-stop-using-tls-sni-01-with-certbot/83210)
との事だった。
ちなみに当ブログではcertbotを使っている。
認証の種類など
TLS-SNI-01とかHTTP-01、DNS-01、TLS-ALPN-01認証などイマイチ意味が分からなかったので調べてみた。
まずは認証はドメインの所有者が正しいかどうか(偽装していないかどうか)を検証する事。
その検証方法がTLS-SNI-01、HTTP-01等、複数あり、以前のcertbotのバージョンはデフォルトでTLS-SNI-01を使用していたのだけれども2018年の1月に脆弱性が見つかったので他の認証方法への切り替えを推奨しつつTLS-SNI-01を廃止するという事になった模様。
脆弱性の詳細についてはこちらの記事を参照。
同一IPアドレス上で複数のドメインを取得できるホスティングサービスの場合、ドメイン名の証明書を他人がTLS-SNIを利用して取得することが出来てしまう脆弱性があるとの事だった。
TLS-SNI-01 | Let’s Encrypt認証局が発行したランダムトークンをWEBサーバー内に設置する 認証局はポート443を使って確認して認証する方式 |
DNS-01 | Let’s Encrypt認証局が発行したランダムトークンをDNSのレコードに登録する 認証局はDNSレコードの確認により認証する方式 |
HTTP-01 | Let’s Encrypt認証局が発行したランダムトークンをWEBサーバー内に設置する 認証局はポート80を使って確認して認証する方式 |
調べてみる
認証方式を明示的に指定するには –preferred-challenges オプションを指定するのだが、先程のリンクをクリックしたりLet’s Encryptのコミュニティを検索してみて調べて所、どうやらcertbotのバージョンを0.28以上にバージョンアップすれば良い事が判明した。
とりあえず現在のcertbotのバージョンを調べてみる
certbot --version
すると0.22.2である事が判明
バージョンアップ
当方の環境はUbuntu Server 16.04 LTS(HVM)64Bit、apacheなので以下のコマンドでバージョンアップした(というよりも上書きインストール)
sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot python-certbot-apache
実行後にバージョンを確認した所、0.28になっていた。
また念の為、apacheを再起動しておいた
sudo service apache2 restart
テスト実行
以下のコマンドでテスト実行してみる(証明書は更新されない)
sudo certbot renew --dry-run
とりあえずこれでOKのはず。
証明書の有効期限が切れる時にまた確認してみるつもり。
3月24日頃に証明書が更新されているはずなので確認をしてみた。
https://www.souichi.club/をChromeで表示して鍵マークをクリックする。
証明書が有効になっているので大丈夫そうだが念の為、”証明書”をクリックする。
3月24に証明書が自動更新されていた事が確認できた。
最近のコメント