目次

Let's Encryptを少し調べてみた

FreeBSDでacme-clientを利用してLet's Encryptの証明書取得を行うことを考えた。ので、ちょっと調べたメモ

Let's Encryptとは?

Let's Encryptは、公共の利益を図る目的で Internet Security Research Group (ISRG) が運営する、無料で利用でき、自動化されていて、オープンな認証局。

Let's Encryptの基本方針

(以上、About - Let's Encrypt - Free SSL/TLS Certificatesより抜粋)

実際に利用するレベルから見ると、

というサービスを提供してくれるサイト及びサービスである。

日本語訳のサイトがあるので、是非一度見て見ることを勧める。Let's Encrypt 総合ポータル

注意点

証明書の取得方法

Let's EncryptはDV証明書を発行するにあたって、ACME(Automatic Certificate Management Environment)を使用する。 このACMEは2017/02/03現在、draft-ietf-acme-acme-04として公開されており、将来RFCになることが期待されている。

このACMEを利用した証明書取得のためのツールは様々あるが、Let's Encryptを利用するにあたっては、Let's Encryptが公開しているcertbotを利用するのが最も簡単であると思われる。

様々な実装のリストもLet's Encryptが公開している。https://letsencrypt.org/docs/client-options/

acmeで証明書を取得・失効する流れ

acme-clientのManual Pageから抄訳

証明書取得の流れは以下の通り。

  1. CA(Let's EncryptのACME Server)に接続し、リソースリストを要求する
  2. (Option) RSAアカウント鍵を作成・登録する
  3. RSAアカウント鍵の確認。これは、CAへの認証とその後すべてのやりとりに利用される
  4. 各domainごとに以下の処理を行う
    1. CAに対し、認証のChallengeを提出
    2. Challengeへの返答ファイルを作成する
    3. Cアのchallengeによる検証を待つ
  5. 展開されたRSAもしくはECDSAのdomain鍵を読み込む
  6. そのdomain及びaltnamesに記載されたドメイン用の、domain鍵を用いたX509リクエストを作成する
  7. X509リクエストへの署名をCAに要求する
  8. X509証明書(Certificate)をダウンロードする
  9. CA issureから来たX509証明書を展開する
  10. 証明書チェーンをissureからダウンロードする

証明書失効の流れも同様。

  1. CA(Let's EncryptのACME Server)に接続し、リソースリストを要求する
  2. (もし見つかれば)、X509証明書を読み込み展開する
  3. X509 失効要求書を作成する
  4. CAに失効要求書を提出
  5. 証明書、チェン、そして、全チェーンを削除する。

Challenge

ACMEにおけるChallengeとは、要するに「存在確認」を意味する。この存在確認方法として以下の3つがIDに定義されている。