PhoenixでLet's Encryptにより無料でSSL対応を行う。
基本的には
Phoenix/Elixir App Secured with Let’s Encrypt – Andrew Forward – Medium
で書かれている通り。
とりあえずサーバー起動。
MIX_ENV=prod mix phx.server
サーバーを起動したまま.well-knownフォルダを更新しなければならないのでそのための設定を行う。
まず.well-knownフォルダ以下をそのままアクセスできるようにするための設定。
lib/プロジェクト名/web/endpoint.ex
にてPlug.Staticの設定に.well-knownを追加する。
plug Plug.Static,
at: "/", from: :yourproject, gzip: false,
only: ~w(css fonts images js favicon.ico robots.txt .well-known)
これで
_build/prod/lib/プロジェクト名/priv/static/.well-known
以下がそのまま公開され、
http://yourdomain.com/.well-known/****.html
のような感じでアクセスできるようになる。
ちなみに、設定を変更したらアプリケーションを再起動する必要があると思う。
また、再起動すると作っていた.well-knownは消えるので混乱しないよう注意。
うまくいったらあとはcertbotで証明書を発行する。
そして設定を更新。
config :yourproject, Yourproject.Web.Endpoint,
http: [port: 80],
https: [port: 443,
url: [host: "yourdomain.com", port: 443],
keyfile: "/etc/letsencrypt/live/yourdomain.com/privkey.pem",
cacertfile: "/etc/letsencrypt/live/yourdomain.com/chain.pem",
certfile: "/etc/letsencrypt/live/yourdomain.com/cert.pem"],
force_ssl: [hsts: true]
これで完了。更新などもそのまま普通にできるようになる。
Now your site is being served up only through SSL directly through Phoenix (no Nginx required).
と書かれているので別のWEBサーバーを使う冗長な方法もあったのだろうか。
とはいえ_build以下を使う方法なので今後のバージョンによってはできなくなる可能性などもあるのかもしれない。
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント