という話。
今回手直ししたモノ
で、これは何か
https://github.com/nyarla/h2o-proxy-letsencrypth2o-proxy-letsencrypt
は、僕が以前に作って、微妙にクリーンではないコードのまま放置していたソフトウェアの一つで、実装の中身としては、
docker container への reverse proxy を h2o でしつつ、 さらに Let's Encrypt で TLS 化する
という代物です。
それで、これの実装には元ネタが有って、一番最初 (だと思われる) 元ネタは、
docker container への reverse proxy を nginx で行なう
という
で、これの h2o 版として実装された、
が、 h2o-proxy-letsencrypt
の元ネタです。まあ、h2o-proxy-letsencrypt はそれの発展形って感じですね。はい。
今回の改善点
んで、話は本題になるんですが、今回 (というか昨日かその前ぐらいに) h2o-proxy-letsencrypt
に対し行なった修正点は、主に、
元のなるコンテナのベースの変更
Let's Encrypt の証明書取得 or 更新スクリプトの修正
これが一番カオスってて、かつコードもスッキリとしていなかった
Let's Encrypt のクライアントを、オフィシャルから bash ベースのモノに変更
lukas2511/letsencrypt.sh + kappataumu/letsencrypt-cloudflare-hook
という感じです。
また、今回の変更に際し、全面的に書き直した Dockerfile の一部のコードを、
から引用しており、また、その Dockerfile が GPLv3 だったため、
今回作り直した ファイルの内、 Dockerfile
のみが GPLv3 に成っています。
あと、以前の h2o-proxy-letsencrypt
は http-01
の challenge を使う様になっていたのですが、
それだと微妙にテストし辛いという事もあって、今回からは dns-01
challenge を CloudFlare で行なう様になっています。
もっとも、この辺りに関しては、h2o-proxy-letsencrypt
が内部的に使っている Let's Encrypt のクライントである、
の仕組みの中で自由に変更が可能なので、dns-01
challenge を行なう dns provider を変更したい、
という場合には、そちらを参照等すると良いかと思います。
ただ、今回の h2o-proxy-letsencrypt
の Dockerfile
は cloudflare 向けの hook script を使う前提と成っているので、
その辺りについては Dockerfile
に修正を加える必要が有ります。
以上
まあ良かったら良いので、もし使う機会等があれば試してみてください。 という事で今回の話は以上です。終ります。