Let's Encrypt

無料発行できる SSL サーバ証明書 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 枚扱い)

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

なお、不特定多数にサブドメインを提供しているなどでレート制限が発生する場合、
それを改善要望するためのリクエストフォームが存在しています。

[ Let’s Encrypt Rate Limit Adjustment Request Form | Google フォーム](https://docs.google.com/forms/d/e/


ステージング環境

ステージング環境 | 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