Let's Encrypt

Let's Encrypt（レッツ・エンクリプト）は、非営利団体の（ISRG）により運営されている証明書認証局で、TLSのX.509証明書を無料で発行している。証明書の有効期間は90日で、期間内のいつでも証明書の再発行を行うことができる。発行はすべて自動化されたプロセスで行われており、安全なウェブサイトを実現するために、証明書の作成、受け入れテスト、署名、インストール、更新を手動で行う必要があった問題を克服するように設計されている。2016年4月に正式に開始された。
概要.
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などが関わっている。
技術.
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）に送付されている。
ソフトウェア実装.
認証局ではACMEプロトコルのサーバ側を実装したBoulderと呼ばれるGoで書かれたソフトウェアが使用される。BoulderはMozilla Public License（MPL）バージョン2に基づいたフリーソフトウェアとしてソースコードとともに公開されており、TLSで暗号化された通信経路からアクセス可能なRESTによるAPIを提供する。
codice_1（旧称codice_2）と呼ばれるApache Licenseに基づくPythonで書かれた証明書管理プログラムがクライアント側（登録者のウェブサーバ）にインストールされる。これは証明書を要求し、ドメイン認証プロセスを実施し、証明書を導入し、HTTPサーバのHTTPS暗号化を設定し、定期的に証明書を更新するために使用される。インストールと使用許諾への合意を行えば、コマンド1つで有効な証明書を導入することができる。やHTTP Strict Transport Security（HSTS）のような追加のオプションを有効化することも可能である。自動セットアップはApacheとnginxのみで利用可能である。
Let's Encryptは90日間有効な証明書を発行する。これはこのような証明書により「鍵漏洩と誤発行によるダメージを抑制することができる」ためであり、自動化を奨励するためである。公式のcodice_1クライアントと多くのサードパーティによるクライアントが証明書の自動更新に対応する。
コミュニティではいくつかのサードパーティにより、クライアント実装がいくつかの言語で行われている。
沿革.
Let's Encryptプロジェクトは2012年に2人のMozilla従業員Josh AasとEric Rescorlaが電子フロンティア財団のPeter Eckersleyとミシガン大学のとともに始めた。Let's Encryptを提供しているInternet Security Research Groupは2013年5月に設立された。
証明書発行数.
[*] これらのうち380万通は有効期限が切れておらず、失効もしていない。Let's Encryptの有効な証明書は700万以上のユニークなドメインをカバーしており、これは大きなホスティング業者によるサポートによる部分もある。