設定方法は「Choose an SSL Option and Install Rancher」に書いてあるわけですが、どうやら最近の Chrome では HTST の設定されたサーバーは自己署名の証明書ではアクセスできないみたいなので Let’s Encrypt で取得して設定することにします。
Rancher サーバーは docker container として実行するので、証明書取得も docker を使いましょう。Single ノードでの方法です
rancher での証明書指定方法
rancher は /etc/rancher/ssl/cert.pem
, /etc/rancher/ssl/key.pem
に置かれたものを使うので、docker container 起動時に -v /host/file/path:/etc/rancher/ssl/cert.pem:ro
などどしてマウントしてやれば良い。 そして --no-cacerts
オプションを追加して自前 CA を作成しないようにします。
lego を使って証明書を取得
docker run \
--rm \
-v /etc/rancher:/etc/rancher \
-p 80:80 \
xenolf/lego \
--path /etc/rancher \
--domains "証明書のドメイン名" \
--email "自分のメールアドレス" \
--filename server \
--accept-tos run
これで、/etc/rancher/certificates/server.crt
, /etc/rancher/certificates/server.key
が生成されます。(他のファイルもある) 上記のコマンドは http-01
ですが、lego は dns-01 や tls-alpn-01 にも対応しています。
rancher 起動
docker run -d --restart=unless-stopped -p 80:80 -p 443:443 \
-v /etc/rancher/certificates/server.crt:/etc/rancher/ssl/cert.pem \
-v /etc/rancher/certificates/server.key:/etc/rancher/ssl/key.pem \
rancher/rancher:v2.0.8 --no-cacerts
これで Chrome でもアクセスできる。
プライベートなドメインの場合は CA 作って /etc/rancher/ssl/cacerts.pem
も置いて、ブラウザにも登録しましょう。