ACME クライアント実装

注意: このページが翻訳された後、英語バージョンのページがアップデートされています。 () 英語で表示する

最終更新日: | すべてのドキュメントを読む

Let’s Encrypt は、与えられたドメインを制御する権限があなたにあることを検証し、証明書を発行するために、ACME プロトコルを使用しています。 Let’s Encrypt の証明書を取得するためには、使用する ACME クライアントを1つ選ぶ必要があります。

以下に示す ACME クライアントはサードパーティにより提供されているものです。 サードパーティ製クライアントは Let’s Encrypt の制御下にはなく、レビューを行っているわけではないので、安全性や信頼性に対する保証をすることはできません。

ブラウザ内で動作する ACME クライアントがいくつか存在しますが、以下のリストには掲載していません。その理由は、手動で更新するワークフローを推奨しているためです。手動での更新はユーザーエクスペリエンスを悪化させる原因であり、更新を忘れるリスクが高まります。

おすすめのクライアント: Certbot

Let’s Encrypt では、ほとんどの人にCertbotクライアントをおすすめしています。 Certbot を使えば、証明書が簡単に取得でき、ユーザーの希望に応じてインストール作業も行ってくれるからです。 使用するのが簡単で、多数のオペレーティングシステムで動作し、ドキュメントも充実しています

Certbot があなたが求める要件を満たさない場合や、単に他のクライアントを試してみたい場合でも、選択できるクライアントは以下に挙げるようにたくさんあります。リストは、実装言語や実行環境によってクループ分けをしています。

その他のクライアントの選択肢

以下のクライアントはすべて ACMEv2 API (RFC 8555) をサポートしています。 まもなく phasing out support for ACMEv1 のサポートは完全に終了する予定です。 すでに以下のクライアントのいずれかを使用しているなら、最新バージョンにアップグレードするようにしてください。 あなたが使用しているクライアントが以下のリストにない場合、ACMEv2 をサポートしていない可能性があります。もしその場合、プロジェクトのメンテナに連絡するか、他のクライアントに切り替えることをおすすめします。

Bash

  • GetSSL (bash, also automates certs on remote hosts via ssh)
  • acme.sh (Compatible to bash, dash and sh)
  • dehydrated (Compatible to bash and zsh)
  • ght-acme.sh (batch update of http-01 and dns-01 challenges is available)
  • bacme (simple yet complete scripting of certificate generation)
  • wdfcert.sh (Only supports DNS-01 challenges and ECDSA-384 bit keys for both accounts and certificates, native Joker DNS support including wildcard plus root domain support for single-TXT-record DNS providers)

C

C++

Clojure

Configuration management tools

D

Domino

  • CertMatica (ACME certificate installation and renewals for HCL Domino™ servers)
  • HCL Domino (Full ACME V2 flow integration for HCL Domino™ servers)

Docker

Go

HAProxy

Java

Kubernetes

Lua

Microsoft Azure

nginx

Node.js

OpenShift

Perl

  • acme (Simple json config, autogen keys, issue cert, refresh cert, apache/nginx integration)
  • Crypt::LE

PHP

Python

  • ACME Tiny
  • simp_le
  • acmebot
  • sewer
  • acme-dns-tiny (Python 3)
  • Automatoes ACME V2 ManuaLE replacement with new features
  • acertmgr
  • acme-cert-tool
  • serverPKI PKI for internet server infrastructure, supporting distribution of certs, FreeBSD jails, DNS DANE support
  • acmetk acmetk is an ACMEv2 proxy to centralize certificate requests and challenges within an organisation and direct them using a single account to Let’s Encrypt or other ACMEv2 capable CA’s.

Ruby

Rust

Windows / IIS

Server

  • Certera (Crossplatform PKI to centrally manage keys and certificates)

ライブラリ

4D

C++

D

Delphi

Go

Java

.NET

Node.js

Perl

  • acme (Simple json config, autogen keys, issue cert, refresh cert, apache/nginx integration)
  • Crypt::LE
  • Net::ACME2
  • wdfcert.sh (Only supports DNS-01 challenges and ECDSA-384 bit keys for both accounts and certificates, native Joker DNS support including wildcard plus root domain support for single-TXT-record DNS providers)

PHP

Python

  • Python の acme モジュールは、Certbot tree の一部として含まれているものですが、スタンドアローンのパッケージとしても公開されています。PyPIDebianUbuntuFedora などのディストリビューションでも配布されており、他の多数のクライアントでも利用されています。
  • txacme (Twisted client for Python 2 / 3)

Ruby

Rust

  • instant-acme is an async, pure-Rust ACME (RFC 8555) client which relies on Tokio
  • rustls-acme provides TLS certificate management and serving using rustls
  • tokio-rustls-acme is an easy-to-use, async ACME client library for rustls

Let's Encrypt と連携できるプロジェクト

クライアントやプロジェクトを追加する

もし上のリストに掲載されていない Let’s Encrypt と連携できる ACME クライアントやプロジェクトを知っていたら、Let’s Encrypt のウェブサイトリポジトリにある data/clients.json ファイルを更新して、プルリクエストを送ってください。

プルリクエストを送る前に、以下の点を確認してください。

  1. クライアントは Let’s Encrypt trademark policy を遵守しているか。
  2. クライアントは、ブラウザベースのものではなく、自動更新に対応しているか。
  3. あなたのコミットは、関連するセクションの一番最後に追加するものであるか (もし対応する場合は、「acme_v2」セクションの記入を忘れないでください!)。
  4. あなたのコミットは、clients.json のヘッダの lastmod の日付を更新しているか。