転載・引用について

ユーザ用ツール

サイト用ツール


サイドバー

Site Contents Index

転載・引用について

RSS

tweet:2017:0203_01

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

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

Let's Encryptとは?

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

Let's Encryptの基本方針

  • 無料
    • ドメインを保持する者が無料で信頼された証明書を取得可能
  • 運用の自動化
    • 証明書の取得から更新まで自動化することが可能
  • 安全
    • 認証局サイド、管理者の両面から、最先端のプラットフォームを提供
  • 透明性
    • 証明書の発行と失効が公式に記録され、一般公開され、誰でも監査できる
  • オープン
    • 各手続き(プロトコル)を、オープン標準として公表
  • 互助・協力
    • コミュニティの利益のための共同の取り組みであり、1つの組織によって統制されているものではない

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

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

  • 無料でSSLサーバ証明書を発行してくれるサービス。
    • あくまでもサーバー証明書のみであり、個人証明書などは発行しない
  • ドメイン認証型の証明書
    • 一般に、サーバー証明書は「ドメイン認証(DV)」、「組織(企業)認証(OV)」、「実在性監査済(EV)」がありますが、DVしか発行しない
      • 無料の証明書にそこまで要求してはいけません。そのレベルの要求をするならお金を払いましょう。

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

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

注意点

  • 有効期間が90日
    • もう少し長くても良いような気もするが、自動化されている前提ならこれでいいのかもしれない。
    • 暗号アルゴリズムの危殆化やProtocolの更新などを考えると、短い方が良いかもしれない。
  • 秘密鍵ファイルはパスフレーズで暗号化していない
    • HTTP ServerやSMTP Serverなど、Server用途で利用するなら、これはこれで仕方がないことかもしれない
    • 秘密鍵ファイルの取り扱いには十分な注意をすること。SSLでHTTP部分を(多少)守ったからといって、サーバーが安全になるわけではないことに十分に留意すること
  • 国コードや組織名の入力がない
    • DV(Domain Validation)ならば、Domainが存在しており、かつ、そのドメインが正当であると判断できればよいので、国コードや組織名はなくても問題ない
    • もちろん、OVやEVならば、組織の存在認定などを受けることからも、国コードや組織名は必要

証明書の取得方法

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に定義されている。

  • http-01
  • tls-sni-01
  • dns-01
このウェブサイトはクッキーを使用しています。 Webサイトを使用することで、あなたはあなたのコンピュータにクッキーを保存することに同意します。 また、あなたはあなたが私たちのプライバシーポリシーを読んで理解したことを認めます。 同意しない場合はウェブサイトを離れてください。クッキーに関する詳細情報
tweet/2017/0203_01.txt · 最終更新: 2017/02/03 14:47 (外部編集)