無料発行できる SSL サーバ証明書 Let’s Encrypt(レッツエンクリプト)についてまとめています。

2021年11月現在、2億6600万 の Web サイトで採用されています。
2020年11月は 2億3200万 でしたので、
現在も新規採用の Web サイトが増加しています。

 ISRG 2021 Annual Report

2022年9月、Let’s Encrypt の最初の創設者の 1 人であった
Peter Eckersley さんが、この世を去りました。
今や世界で採用される素晴らしい成果物、ありがとうございます。
ご冥福をお祈りします。
  Peter Eckersley, may his memory be a blessing | Let’s Encrypt

目次


公式・関連サイト

公式サイトでは日本語と英語で異なる表示になる場合があります。
日本語では情報が古くなっている場合があります。
必要に応じて言語を切り替えて参照して下さい。


対応しているブラウザ等

 証明書の互換性 | Let’s Encrypt

現在主要な環境では Let’s Encrypt に対応しています。
古い環境では Let’s Encrypt 非対応です。


発行方法

レンタルサーバや Web サービスを使用している場合は、
サーバ・サービスで Let’s Encrypt に対応している事が多いです。
この場合、自動更新も行われます。手動で発行・更新する必要はありません。

ここでは主に VPS・専用サーバ や個別にサーバを設置している場合での
発行方法となります。

 ACME クライアント実装 | Let’s Encrypt

公式サイトにもいくつか紹介されています。このページでいくつか紹介します。

Caddy

 Caddy
🎈 Caddy | ふうせん🎈 FU-SEN

Web サーバ Caddy は Let’s Encrypt の発行・更新に対応し、容易に SSL 化が可能です。

Certbot

 Certbot

Let’s Encrypt 推奨クライアントです。systemd の定期実行 .timer ファイルがあります。

win-acme - Windows ACME Simple (WACS)

 win-acme/win-acme | GitHub

Windows をサーバにしている場合は win-acme が使えます。
常住させて自動発行・更新も可能です。


ドメイン認証方法

 チャレンジのタイプ | Let’s Encrypt

2020年2月現在、次にあるいずれかの方法でドメイン認証を行います。
WHOIS を用いた認証方法は用いていません。

 Q&A / WHOIS プライバシー(名義代行)を解除する必要はありますか?

HTTP-01 チャレンジ

多くの場合、このドメイン認証方法が使われます。
ドキュメントルート/.well-known/acme-challenge/<TOKEN> を生成し、
http://<YOUR_DOMAIN>/.well-known/acme-challenge/<TOKEN> で参照します。
301・302 転送がある場合、その転送先を参照可能です。

DNS-01 チャレンジ

 DNS providers who easily integrate with Let’s Encrypt DNS validation | Let’s Encrypt コミュニティ - 対応しているネームサーバ

ワイルドカード証明書は DNS-01 必須です。個別ドメインでも使用可能です。
TXT レコードに _acme-challenge.<YOUR_DOMAIN> を生成し、このレコードを参照します。

TLS-ALPN-01 チャレンジ

Caddy のリバースプロキシで採用される認証方法です。まだ対応が少ないです。

🎈 Caddy | ふうせん🎈 FU-SEN


レート制限

 レート制限 | Let’s Encrypt

いくつかのレート制限があります。特に次の制限は経験しやすいです。

  • 検証失敗時は 1 ホスト名・ 1 時間毎 5 回まで
  • IP アドレスに 3 時間毎 10 枚まで
  • IPv6 の /48 毎に 3 時間毎 500 枚まで
  • ドメイン毎に 1 週間 50 枚まで(マルチドメイン証明書はまとめて 1 枚扱い)

アカウント=メールアドレスと考えて下さい。上記はいずれもアカウント毎です。

2019年3月より証明書の更新はレート制限の対象外となったため、
レート制限が発生するケースは現在減っています。

レート制限が発生する程大量のサブドメインを使用するなどしている場合、
以前は 🎈 Public Suffix List へ登録していましたが、
現在はレート制限フォームへ申請するのが主流です。

2022年に 🎈 HelioHost のユーザー向けドメイン
heliohost.org および heliohost.us がこれを経験し、対処しています。

 Let’s Encrypt Rate Limit | HelioNet
 Great SSL News | HelioNet

HelioNet は HelioHost の公式サポートフォーラム(掲示板)です。


ステージング環境

 ステージング環境 | Let’s Encrypt

本番環境で運用する前のサイト・ブログ構築やテストを目的として、
Let’s Encrypt では ACME の URL を変更する事で、
ステージング環境(Staging Environment)での証明書を発行する事ができます。

ステージング環境でもレート制限は存在していますが、
本番環境とは別にレート制限がカウントされます。
また、ステージング環境のレート制限は本番環境よりゆるくなっています。


証明書の期限

Let’s Encrypt の期限は 90 日です。
証明書の更新は期限 30 日前から更新できます。

期限が短いため、一般公開されている Web サーバなどに適用する場合は、
通常自動更新に対応する必要があります。
上記の仕様より、60~90 日毎に証明書が更新されていく事になります。


メール通知

 Expiration Emails | Let’s Encrypt

メールアドレスを登録すると、
有効期限 20日前・10日前・1日前にメール通知が行われます。


Q&A

公式サイトの「よくある質問 (FAQ)」も参照してみて下さい。

 よくある質問 (FAQ) | Let’s Encrypt

WHOIS プライバシー(名義代行)を解除する必要はありますか?

いいえ。有効のまま SSL サーバ証明書を発行できます。

有料の SSL サーバ証明書では、WHOIS のメールアドレスに送信して、
ドメイン認証を行う証明書が存在しますが、
Let’s Encrypt は通常 http・https または ネームサーバ を使用してドメイン認証し、
ドメインの WHOIS を参照していません。

サブドメインを別システムで使用したいのですが、どのようにすれば良いですか?

そのシステム向けに別途証明書を発行して下さい。
このような場合でも Let’s Encrypt はサブドメイン用に別の証明書を発行できます。

一般公開されているサブドメインで発行できますか?

Public Suffix List に登録されているサブドメインは独自ドメイン同等に扱います。

 Public Suffix List
 publicsuffix/list | GitHub
🎈 Public Suffix List | ふうせん🎈 FU-SEN

マルチドメイン証明書に対応していますか?

Subject Alternative Name (SAN) 証明書に対応しています。
1 枚の証明書に 100 ドメインまで入れられます。

ワイルドカート証明書に対応していますか?

対応しています。 *.example.net で発行できます。

CSR・キー発行する必要はないのですか?

Let’s Encrypt では CSR なしで発行し、証明書と共にキーも生成されるのが普通です。
Let’s Encrypt そのものは CSR とキーを生成した上での生成も可能ですが、
使用するシステムによって対応していない場合があります。

使用しはじめのサーバで新規発行に失敗します。

http://ドメイン名/ で参照できる状態である必要があります。
サーバが起動していない時はもちろん、
ドメイン全体で BASIC 認証が生じている場合も HTTP-01 では発行できません。

ドメイン・サブドメインを設定したての場合は数時間置いた後に再試行します。

メールアドレスを設定してみて下さい。

内部使用向けに証明書を発行できますか?

ネット公開できるドメインが対象です。
LAN・ローカル使用向けの場合は発行できません。

 Certificates for localhost | Let’s Encrypt

証明書の発行・更新状況を知りたいです。

crt.sh でドメイン・サブドメインの証明書発行状況を確認できます。

 crt.sh

古い Android で参照できなくなるそうですが?

 Standing on Our Own Two Feet | Let’s Encrypt

Android 8.0 以降の Android は 60.8%(2020年9月現在)で、
まだ約 40% は Android 7.1 以前です。
Let’s Encrypt は新たなルート証明書として ISRG Root X1 がありますが、
Android 7.1.1 以前はこの ISRG Root X1 の証明に対応していません。
現在対応している DST Root X3 は 2021年9月1日 で期限切れとなるため、
その後 Let’s Encrypt を用いた Web サイトが参照できなくなります。
ただし、アプリレベルでも対象外のバージョンとなり、
セキュリティ的にもあまり古い Android の考慮までは考えない方が良いでしょう。

発行者が R3 表記になっているのですが?

 Chain of Trust | Let’s Encrypt

正常です。2020年12月~2021年1月ごろから発行されている Let’s Encrypt は
中間証明書の更新により、発行者が「R3」表示に変更しています。