🍄

dokkuでのSSL証明書の設定方法

2024/10/01に公開

dokkuのSSL設定メモです。

Let's Encrypt Plugin

  • 一番簡単
  • 複数ドメインに対応できる
  • ポート設定自動
  • アプリ毎に毎回enableする必要がある

https://github.com/dokku/dokku-letsencrypt

インストール

sudo dokku plugin:install https://github.com/dokku/dokku-letsencrypt.git

使い方

dokku letsencrypt:enable <app>
dokku letsencrypt:auto-renew

domain設定してあるすべてを内包した証明書が検証されて出る。

WildCardSSLを使う

  • 一括で更新できる(が、cron仕込みなど必要)
  • ポート設定必要
  • DNS認証が必要なためちょっとめんどくさい

インストール

  • DNSを向けておく
  • DNS認証が必要なので、cloudflare/route53などのキーを事前取得しておく
  • certbot/legoなどをインストールして無料のワイルドカード証明書を発行するのが便利です(別に有償のものでも構わないが)
sudo apt install lego
lego \
--email "hohohoho@hohoho" \
--domains "dokku.hohoho" \
--domains "*.dokku.hohoho" \
--dns route53
-a run

以下のようにSSL設定を追加

/etc/nginx/sites-available/default
server {
	listen 80 default_server;
	listen [::]:80 default_server;

	# SSL configuration
	#
	listen 443 ssl default_server;
	listen [::]:443 ssl default_server;

	ssl_certificate         /etc/lego/certificates/dokku.hohoho.crt;
	ssl_certificate_key     /etc/lego/certificates/dokku.hohoho.key;
    ....

使いかた

アプリ設定(5000で公開されている場合)

dokku ports:add myapp http:443:5000

注意: Let's Encrypt Plugingではポート設定はhttps:443:5000になっている。httpsで設定すると(dokku certsで)証明書がセットされていないエラーが出る。

更新

lego \
--domains "dokku.hohoho" \
--domains "*.dokku.hohoho" \
--dns route53
-a renew

Discussion