2019/04/08に発生したFRONTL1NEサーバーの証明書エラーとそれの対策について (Let’s Encrypt & nginx)

2019年4月8日

おはようございます。FRONTL1NE運営チームのFL1NEです。

今朝から発生していたSSL証明書エラーの関係でサイトをご利用いただいている皆様にご不便おかけしましたことをお詫び申し上げます。

 

今回のエラーの原因と対策をここに書いておきます。

 

何が起きたのか

「Let’s EncryptのTLS-SNI-01を利用した認証終了に伴う証明書の更新エラー」

FRONTL1NE.NET及び子サーバーではLet’s Encryptを利用してSSL証明書を入手しています。

Let’s Encryptの証明書は3ヶ月で期限切れになるため、1ヶ月毎にcronで自動更新を行なっていました。

証明書更新の際に行われる認証はTLS-SNI-01(443ポートを利用したチャレンジ&レスポンス)を利用していましたが、TLS-SNI-01の脆弱性が見つかり、Let’s Encrypt側がTLS-SNI-01での認証を終了したため証明書の期限切れでおきたエラーです。

 

対策

nginx内で80(HTTP)で受けたリクエストを全て301で443(HTTPS)に飛ばしていましたがそれをやめ、認証用の /.well-known/acme-challengeへ来たリクエストをそのまま80で返すようにnginxのコンフィグを変更しました。

変更は以下の通りです。

server {
    listen 80;
    return 301 https://$host$request_uri;
}

server {
    listen       443 ssl http2;

    #設定色々
}

server {
    listen 80 default_server;
    location ^~ /.well-known/acme-challenge/ {
          default_type "text/plain";
          root         /opt/acme;
        }
    location / {
          return 301 https://$host$request_uri;
        }
}

server {
    listen       443 ssl http2;

   #設定色々
}

 

参考文献

Let’s EncryptのTLS-SNI-01認証のバリデーションに伴う対応策まとめ | DesignSupply.

 

 

nginx実践入門 (WEB+DB PRESS plus)
  • 久保 達彦, 道井 俊介
  • 価格   ¥ 3,047 prime
  • 販売者 Amazon.co.jp
クリックして今すぐチェック
Nginx ポケットリファレンス
  • 鶴長鎮一, 馬場俊彰
  • 価格   Check on Amazon
クリックして今すぐチェック
プロフェッショナルSSL/TLS
  • Ivan Ristić
  • 価格   ¥ 5,499 prime
  • 販売者 技術書出版ラムダノート
クリックして今すぐチェック
マスタリングTCP/IP SSL/TLS編
  • Eric Rescorla, 齋藤 孝道, 古森 貞, 鬼頭 利之
  • 価格   ¥ 4,950 prime
  • 販売者 Amazon.co.jp
クリックして今すぐチェック