職業プログラマの休日出勤

職業プログラマによる日曜自宅プログラミングや思考実験の成果たち。リアル休日出勤が発生すると更新が滞りがちになる。記事の内容は個人の意見であり、所属している(いた)組織の意見ではない。

Let's letsencrypt

もしかしたら今更…なのかもしれませんが、無償でSSL証明書を発行してくれるサービス Let's Encrypt を試してみました。

letsencrypt.org

特徴

  • 無償
  • 証明書の有効期限は3ヶ月程度。証明書を更新するタスクを定期自動実行することが推奨されている。revoke が突然走るかもしれないから、という背景もあるらしい。
  • 証明書の作り直しなどには回数制限がある。 https://letsencrypt.org/docs/rate-limits/
  • 多くのブラウザでは信頼されている(root証明書がインストールされている)、らしい。

試したかったこと

  • 簡単に導入できるのか?
  • 長期的な運用で困りそうなものは無いか?
  • 手元のブラウザで、本当に信頼されているのか?
  • ワイルドカード証明書、または SANs のある証明書を作ることができるのか?

Let's Encrypt の仕組み

このページを読むのが一番。英語ですけど。
letsencrypt.org

要は、Let's Encrypt のサーバと通信するクライアントが何かしら必要、ということです。
そのクライアントにも様々なものが存在するようですが、公式に推奨されているものとしてcertbotがあります。以下の 試してみた は全て、certbotを使ったものになります。

試した環境

Amazon Linux で試してみた

certbotのインストール手順の中には Amazon Linux は登場しません。
CentOS/RHEL6 に沿って作業をすると、「Amazon Linux は未だサポートしてないから --debug オプションつけて作業してや」みたいなメッセージが表示されます。
--debug オプションをつけて作業をしようとしましたが、面倒臭くなって途中で匙を投げてしまいました。

Ubuntu で試してみた

すんなり。
事前の Virtual Host の設定がキレイにできていれば、SANs も楽勝でした。

Debian で試してみた

手順の中にある $ sudo apt-get install python-certbot-apache -t jessie-backports が、一部の環境で上手くいきませんでした。
「jessie-backportsなんか知らんわ」といったメッセージでした。
ググったところ、こんなページが出ました。https://community.letsencrypt.org/t/unable-to-install-certbot/17916/11
ここのリンク先、https://backports.debian.org/Instructions/ の指示に従って jessie-backports を有効にしたら、あとは上手くいきました。

まとめと、今後の課題

  • 現時点では、Amazon Linux で使うのは大変そう
  • UbuntuDebian なら簡単そう
  • 長期運用について差し迫った問題は特に見当たらなかった
  • 自動更新の仕組みがコケたことを検知する仕組みは、用意しておくと安心かも
  • ブラウザ対応は、パッと見、問題なさそう
  • SANs 一手間かかるけどイケる
  • ワイルドカードは、今はサポートしてないっぽい:https://letsencrypt.org/docs/faq/

参考図書

本件を試すにあたって買ったりした訳ではないですが、オススメです。

暗号技術入門 第3版 秘密の国のアリス

暗号技術入門 第3版 秘密の国のアリス

マスタリングTCP/IP SSL/TLS編

マスタリングTCP/IP SSL/TLS編