Netlify+CloudflareでLet's Encryptを自動更新する

はじめに

NetlifyをCloudflareでキャッシュしている場合、Let's EncryptのSSL/TLS証明書の自動更新ができません。なぜならば、Let's EncryptがNetlifyのサーバを直接確認できないからです。CloudflareのDNS設定を「プロキシ」から「DNSのみ」に変更することで一時的にNetlifyサーバから配信して証明書の更新が行えます。

ただし、3か月毎に更新が必要なため、この作業を繰り返すのは正直面倒です。そこで、自動的に処理してくれるように設定します。

やり方

Netlifyでドメインエイリアス機能を使用します。NetlifyのLet's Encrypt証明書更新は、プライマリドメインに対して行われます。そのため、プライマリドメインをNetlifyから配信し、ドメインエイリアスをCloudflareで配信することで対応します。

  1. プライマリドメインがCloudflare配信で既に設定されていることを確認する
  2. Netlifyでドメインエイリアスを設定する
  3. CloudflareでドメインエイリアスのCNAME設定をする
    • プロキシステータスは、「DNSのみ」とする
  4. ドメインエイリアスからファイルが配信できていることを確認する
    • 「この接続ではプライバシーが保護されません」として表示されます
      • 詳細情報からページにアクセスできればOKです
      • httpsでアクセスするとまだ証明書がないため、この表示となります
  5. Netlifyでドメインエイリアスをオプションから「プライマリドメイン」へ変更する
    • 元ドメインがドメインエイリアスとなり
    • 新ドメインがプライマリドメインとなる

※新規で設定したプライマリドメインのIPは、外部に公開されます