Let's Encrypt

Let's Encrypt（レッツ・エンクリプト）は、非営利団体の（ISRG）により運営されている証明書認証局で、TLSのX.509証明書を無料で発行している。世界最大の認証局であり、4億を超えるウェブサイトで使用されている。証明書の有効期間は90日で、期間内のいつでも証明書の再発行を行うことができる。発行はすべて自動化されたプロセスで行われており、安全なウェブサイトを実現するために、証明書の作成、受け入れテスト、署名、インストール、更新を手動で行う必要があった問題を克服するように設計されている。2016年4月に正式に開始された。

 概要 
サムネイル|Let's Encryptを使用したウェブサイトの例
Let's Encryptは、すべてのWebサーバへの接続を暗号化することを目指したプロジェクトである。支払い、サーバ設定、メールによる確認、証明書の更新といった作業を省略することで、TLS暗号化における設定や保守の複雑さを大幅に削減することを意図している。LinuxのWebサーバーでは、HTTPSの暗号化の設定および証明書の入手・更新がわずか2つのコマンドによって可能である。

このため、Let's EncryptのソフトウェアパッケージはDebianやUbuntuの公式リポジトリに含まれている。MozillaやGoogleなどの主要なブラウザベンダーが現在主導しているHTTPS重視の方針は、Let's Encryptの利用可能性を見込んだものである。このプロジェクトは、ウェブ全体の暗号化接続を達成する可能性のあるものであると認められている。

完全自動化のため、ドメイン認証（Domain Validation、DV）型証明書のみ発行しており、企業認証（Organization Validation、OV）型やEV（Extended Validation）型は提供していない。日本語ドメインなどの国際化ドメイン名には対応する。

Let's Encryptは、できる限り透明化することで信頼性を維持し、攻撃から保護するねらいがある。このため定期的に報告書を発行し、全てのACMEトランザクションを公開し（たとえばCertificate Transparencyなどにより）、できる限りオープン標準と自由ソフトウェアを使用している。

ACME v2とのサポートが2018年3月から開始された。

 互換性 
Let's Encryptの中間証明書はのルート証明書によってクロス署名されており、幅広いプラットフォームに対応している。未対応の代表的なものとして一部のフィーチャーフォンやニンテンドー3DSなどがあげられる。

 関係団体 
Let's Encryptは（ISRG）がサービスを提供している。主要なスポンサーは電子フロンティア財団（EFF）、Mozilla Foundation、アカマイ・テクノロジーズ、OVH、シスコシステムズ、Facebook、Google Chrome、Internet Societyである。 その他の関係団体としては認証局の、ミシガン大学、スタンフォード・ロー・スクール、Linux Foundationなどがあり、レイセオン/BBNテクノロジーズの、CoreOSのAlex Polvなどが関わっている。

 技術諮問委員会 
 Rich Salz（アカマイ・テクノロジーズ）
 Joe Hildebrand（シスコシステムズ）
 Jacob Hoffman-Andrews（電子フロンティア財団）
 J. C. Jones（Mozilla Foundation）
 Russ Housley（Independent）
 Ryan Hurst（Google）
 Stephen Kent（Independent）
 Karen O'Donoghue（インターネットソサエティ）

 技術 
2015年6月、Let's Encryptはオフラインにされた上に秘密鍵の保管されたRSAルート証明書を生成した。ルート証明書は認証局によってクロス署名される2つの中間証明書に署名するために使用された。中間証明書のうち一方は発行された証明書に署名するために使用され、他方は一つ目の中間証明書に問題が発生した際のバックアップのためにオフラインで保管されている。IdenTrustの証明書は主要なブラウザにプリインストールされているため、ISRGのルート証明書をとして含んでいるブラウザが存在しないにもかかわらずLet's Encryptの証明書は通常何もすることなく有効である。

Let's Encryptの開発者たちはECDSAのルート証明書も同様に2015年内に生成する予定であったが、これは2016年頭へと延期され、2019年へとさらに延期された。

 プロトコル 
この新しい認証局への登録を自動化するためのプロトコルはAutomated Certificate Management Environment（ACME）と呼ばれている。これには証明書がカバーしているドメイン上のウェブサーバに対する様々なリクエストが含まれている。レスポンス結果が期待されているものと一致しているかに基づき、登録者がドメインの管理を行っているかが確認される（ドメイン認証）。これを実現するため、ACMEクライアントソフトウェアはサーバシステム上にACME認証局サーバからのServer Name Indication（Domain Validation using Server Name Indication、DVSNI）を用いた特殊なリクエストを受けるための特殊なTLSサーバを立ち上げる。

認証プロセスは個別のネットワーク経路を用いて複数回実施される。DNSスプーフィング攻撃が困難になるよう、DNSエントリの確認は地理的に離れた複数の地点から実施される。

ACMEの動作はJSONドキュメントをHTTPS接続上で交換することで実施される。仕様書のドラフト版はGitHub上で入手可能であり、インターネット標準の提案としてInternet Engineering Task Force（IETF）に送付されている。

 ソフトウェア実装 
サムネイル|Let's Encrypt証明書を持つウェブサイトの例
認証局ではACMEプロトコルのサーバ側を実装したBoulderと呼ばれるGoで書かれたソフトウェアが使用される。BoulderはMozilla Public License（MPL）バージョン2に基づいた自由ソフトウェアとしてソースコードとともに公開されており、TLSで暗号化された通信経路からアクセス可能なRESTによるAPIを提供する。

certbot（旧称letsencrypt）と呼ばれるApache Licenseに基づくPythonで書かれた証明書管理プログラムがクライアント側（登録者のウェブサーバ）にインストールされる。これは証明書を要求し、ドメイン認証プロセスを実施し、証明書を導入し、HTTPサーバのHTTPS暗号化を設定し、定期的に証明書を更新するために使用される。インストールと使用許諾への合意を行えば、コマンド1つで有効な証明書を導入することができる。やHTTP Strict Transport Security（HSTS）のような追加のオプションを有効化することも可能である。自動セットアップはApacheとnginxのみで利用可能である。

Let's Encryptは90日間有効な証明書を発行する。これはこのような証明書により「鍵漏洩と誤発行によるダメージを抑制することができる」ためであり、自動化を奨励するためである。公式のcertbotクライアントと多くのサードパーティによるクライアントが証明書の自動更新に対応する。

コミュニティではいくつかのサードパーティにより、クライアント実装がいくつかの言語で行われている。

 沿革 
Let's Encryptプロジェクトは2012年に2人のMozilla従業員Josh AasとEric Rescorlaが電子フロンティア財団のPeter Eckersleyとミシガン大学のとともに始めた。Let's Encryptを提供しているInternet Security Research Groupは2013年5月に設立された。

2014年11月18日 Let's Encryptが公表された。
2015年1月28日 ACMEプロトコルが正式な標準化のためにIETFに提出された。
2015年4月9日 ISRGとLinux Foundationのコラボレーションが宣言された。
ルート証明書と中間証明書は6月の初めに生成された。
2015年6月16日 最終的なサービス立ち上げのスケジュールが公表された。併せて2015年7月27日の週のどこかで最初の証明書が発行される予定であり、セキュリティとスケーラビリティの検証のため発行期間が選定的になることが告知された。当初、サービスが一般に利用可能になるのは2015年9月14日の週のどこかの予定であった。IdenTrustによるクロス署名がLet's Encrypt一般サービス開始時に開始される計画となった。
2015年8月7日 サービスの立ち上げスケジュールがシステムのセキュリティと安定性向上のため変更され、最初の証明書の発行予定が2015年9月7日に、サービスが一般に利用可能になるのは2015年11月16日の週となった。
2015年9月14日 ドメイン「helloworld.letsencrypt.org」のために、最初の証明書を発行。同日、ISRGは、Mozilla、マイクロソフト、グーグルとAppleにそのルート・プログラム・アプリケーションを提出した。
2015年10月19日 中間証明書に、クロス署名としてIdenTrustを選定したことにより、Letsencryptによって発行されたすべての証明書、すべての主要なブラウザによって信頼されるようになった。
2015年11月12日 最初のパブリックベータ開始日を2015年12月3日である発表した。
2015年12月3日 パブリックベータの開始を発表した。
2016年4月12日 ベータ期間が終了した。

 証明書発行数 
 日付 証明書発行数（累計） 2016年3月8日 100万 2016年4月21日 200万  2016年6月3日 400万 2016年6月22日 500万[*]  2016年9月9日 1000万  2016年11月27日 2000万 2016年12月12日 2400万  2017年6月28日 1億 2018年8月6日 1億1500万 2018年9月14日 3億8000万2020年2月27日10億
[*] これらのうち380万通は有効期限が切れておらず、失効もしていない。Let's Encryptの有効な証明書は700万以上のユニークなドメインをカバーしており、これは大きなホスティング業者によるサポートによる部分もある。

 参考文献 
  (latest standardisation draft of the ACME specification)

 脚注 

 関連項目 
 HTTPS Everywhere

外部リンク


Seth Schoen - Let's encrypt! — GNU MediaGoblin 
Let's Encrypt Overview 
media.ccc.de - Let's Encrypt 
Let's Encryptによって発行された証明書リスト 

Category:認証局
Category:サンフランシスコの組織