自己紹介

  • なかじま ひろたか
  • @nunnun
  • 慶應義塾 ITC本部 助教 (AS38635)
    ISOC Japan Chapter, Secretary
    W3C Systems Team
  • JANOG初参加
    お友達になりましょう & 仲良くしてください :)

何が問題か?

セキュリティはとても重要

証明書への道のりは険しい

  • 証明書発行プロセス:
    証明書プロバイダー毎に異なり自動化されていない
  • 最初に証明書の発行を申請して...
  • ... その後どう証明書をインストールするかわかる
  • いい加減自動化したくないですか?

新しい認証局

  • 無料で(Free)
  • 自動化され(Automated)
  • 透明性が確保され(Transparent)
  • オープンで(Open)
  • 協同的な(Cooperative)

自動化された認証局

Automated Certificate Management Environment (ACME)

  • もし誰かがexample.comの証明書を要求したとして、
  • どうやってexample.comを実際に所有しているか確認しますか?

ドメイン検証

ドメイン所有者のみ可能な方法を使って検証:

  • DNSレコードを設定する
    _acme-challenge.example.com
  • ファイルを設定する
    http://example.com/.well-known/acme-challenge/
  • example.com上にTLSサーバを構築する

自動化された検証プロセス

  • 詳しくはACME仕様書に記載
    • どう申請し承認するか
    • どう検証するか
    • どう証明書を要求するか
  • 標準化されたプロトコルなので誰でもツールを作れる
  • ACMEの目標はWebサーバに組み込まれ、HTTPSを自動構成すること

透明性のあるCA

すべての証明書の監査ログはCertificate Transparencyにより誰でもアクセス可能

オープンなCA

Let's Encryptが使ってる
すべてのツール・ソフトウェアはオープンソース:


Pull request
お待ちしています!

協同的なCA

多種多様なスポンサー

さまざまな連携

将来的には...

既に25万枚の証明書が発行

まだ始まったばかり...

  • Let's Encryptは既存CAの下部CAとして信頼されています
  • RootCAのブラウザへの組み込みは申請中
  • デモサイトで実際の証明書を確認できる
  • 2015年12月3日から利用可能に!

どうやって使うの?

  • まだベータ版なのでOSなどへの組み込みはこれから
  • なので、ここからはどうやって使うか紹介します
  • Windowsの方はWindowsクライアントが使えます

インストール

  • Debian, Arch linux, FreeBSD, OpenBSDはパッケージ管理からインストール出来るようになります
  • まだパッケージが存在しないディストリビューションはgithubからソースを取得します
$ git clone https://github.com/letsencrypt/letsencrypt
$ cd letsencrypt
$ ./letsencrypt-auto --help
$ # 必要な依存パッケージをインストールした後、sudoによる権限昇格を要求する

証明書の取得(Apache)

  1. ServerNameなど
    正しく設定されているか確認して、コマンドを実行
    $ ./letsencrypt-auto --apache
  2. 証明書を取得したドメインの選択を行う
  3. 緊急時や鍵紛失時のメールアドレスを入力
  4. HTTPS接続を必須とするかどうか選択
  5. 完了!

必要なhttpd.confの設定などは
letsencryptが全部やってくれます

証明書の取得

  1. ドメイン所有権を確認します
    • Webサーバを一時的に停止出来る場合
      $ ./letsencrypt-auto certonly --standalone -d example.com
    • 停止出来ない場合 
      $ ./letsencrypt-auto certonly --webroot -w /var/www/example -d example.com
  2. 証明書は下記ディレクトリに保存される
    /etc/letsencrypt/live/[ドメイン名]/fullchain.pem

証明書の更新

  • Let's Encryptで発行される証明書の有効期限は90日
  • 更新作業も自動化したいですよね
  • cronを使えば自動的に更新ができます
$ ./letsencrypt-auto certonly --keep-until-renewal --webroot -w /var/www/example.com -d example.com,www.example.com -w /var/www/thing -d thing.is,m.thing.is
#!/bin/sh
service nginx stop  # or whatever your webserver is
if ! /path/to/letsencrypt-auto certonly -tvv --standalone --keep -d example.com,www.example.com,thing.is > /var/log/letsencrypt/renew.log 2>&1 ; then
    echo Automated renewal failed:
    cat /var/log/letsencrypt/renew.log
    exit 1
fi
service nginx start # or whatever your webserver is

詳しくはWebで

詳細な利用方法はWebサイトを見てください