Sponsored Links

Rancher 2.0 サーバーへのサーバー証明書の持ち込み

Rancher

設定方法は「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 も置いて、ブラウザにも登録しましょう。