WebサーバーなしでLet's Encryptに証明書を発行してもらった

Webサーバーはまだない、とにかくLet's Encryptの証明書をとってみたかった。Route53にドメインはある。自分のWindowsパソコンを使う。インターネットからアクセスできるサーバーを用意したくない。

Dockerでcertbotを使ってDNS-01方式で証明書を発行してもらう。

  • Let's EncryptはCA(認証局)
  • Let's EncryptはACME(Automatic Certificate Management Environment) protocolで証明書を発行してくれる

  • certbotはACME protocolのクライアント

  • certbotは電子フロンティア財団(eff)が作ってる
  • Docker Hubにイメージがあるcertbot/certbot

  • ACMEにはDNS-01方式がある

  • DNS-01仕様はDNSのTXTレコードでドメインの所有を示せるので、Webサーバーを用意しなくてもいいい

  • Docker for Windows

docker run -it --rm \
    -v C:\Users\Public\etc\letsencrypt:/etc/letsencrypt \
        certbot/certbot certonly  \
            --manual \
            --preferred-challenges dns \
            --email "email address" \
            --domain "domain"
  • いくつか確認の入力がある
  • トークンが発行されるので、対象ドメインサブドメイン _acme-challenge.[domain]のtxtレコードに設定する
  • txtレコードの確認方法
  • nslookup -q=TXT [domain'
  • 証明書は /etc/letsencryptフォルダのlive/$domainの中にある

  • certbotには、Route53のtxtレコードの設定まで自動でやってくれるプラグインもある