LoginSignup
541
483

More than 3 years have passed since last update.

docker で全自動 Let's encrypt

Last updated at Posted at 2017-02-16

https-portal があまり知られてないようなので紹介記事だけ書いとく。
https://github.com/SteveLTN/https-portal

あなたがすでにhttpで動作するサービスのdockerコンテナを持ってるなら、こいつを docker-compose に加えるだけで https 対応は完了。

え?

加えるだけで完了。

まじです。

https-portal は何をするものか

基本的には https のリクエストを受け取り、他のコンテナの http へ転送するリバースプロキシとして動作する nginx である。
ところで https を提供するには証明書の取得、設定などが必要だが、こいつはそれを全自動でやってくれる。

え?

証明書の取得、設定を全自動でやってくれる。

まじです。

期間延長も自動でやってくれるらしい。

まあとにかく便利なので、 Let's encrypt したい人は使わない手はないですね。

設定方法

冒頭のURL見れば全部書いてあるので改めて書くこと何もないのだけど、 Quick Start のとこだけコピペしてざっくり解説しておくと、

https-portal:
  image: steveltn/https-portal:1
  ports:
    - '80:80'
    - '443:443'
  links:
    - wordpress
  restart: always
  environment:
    DOMAINS: 'wordpress.example.com -> http://wordpress'
    # STAGE: 'production'
    # FORCE_RENEW: 'true'

wordpress:
  image: wordpress
  links:
    - db:mysql

db:
  image: mariadb
  environment:
    MYSQL_ROOT_PASSWORD: '<a secure password>'

という感じ。 wordpress と db のとこは、おのおの公開したいwebサービスの設定と置き換わる。ポイントとなるのは https-portal.environment のあたり。

    DOMAINS: 'wordpress.example.com -> http://wordpress'

左側が実際に公開したいドメイン名。 (当たり前だけどドメインは事前に取得しておく必要があり、 Let's encrypt が所有権を確認するためにはあらかじめDNSを設定しておく必要がある)
-> の右側は docker のコンテナ名。https-portal が受け取ったリクエストをこのURLへリダイレクトし、レスポンスをまたsslにして返却してくれるという感じ。

# STAGE: 'production'

これコメントアウトしておくと、Let's encrypt せずに、オレオレ証明書を用いたhttps プロキシとして動作してくれるのでまずはこれでローカル環境などで動作確認をする。うまくhttps通信ができることを確認できたら、コメントを外してパブリックな環境にデプロイし、DNSを向けると、自動的に証明書を取得、設定してくれる。

541
483
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
541
483