Proxmox VE の SSL/TLS 証明書を Let’s Encrypt にする

今は下の記事のとおり、管理画面の ACME 設定で運用している。

Proxmox VE も Let’s Encrypt の証明書に変更した。
こちらは certbot で対話式にインストールする。
手順は下のサイトのとおり。

目次

事前準備

Let’s Encrypt で証明書を発行する場合、外部から port 80 に接続できる必要がある。証明書の発行だけだから port 443 には接続できなくても良い。
自分の環境だと、リバースプロキシの設定で pve.example.com とかに接続できるよう設定ファイルを追加した。

server {
    server_name pve.example.com;
    listen 80;
    client_max_body_size 0;
    location / {
        proxy_set_header    Host    $host;
        proxy_set_header    X-Real-IP    $remote_addr;
        proxy_set_header    X-Forwarded-Host       $host;
        proxy_set_header    X-Forwarded-Server    $host;
        proxy_set_header    X-Forwarded-For    $proxy_add_x_forwarded_for;
        proxy_pass    http://192.168.1.x;
    }
}

あと、予め MyDNS にも A レコードを追加しておくこと。

インストール

PVE には入っていないから、まずは certbot をインストールする。ssh で PVE に root ログインしてターミナルから、

# apt install certbot

証明書の発行

証明書を取得する。リダイレクトの設定など不要(そもそも管理画面は port 443 で待ち受けていない)。
certbot の実行中、一時的に Web Server を起動して port 80 で待ち受けるらしい。

# certbot certonly

実行結果は次のとおり。長いから折りたたむ。

スクリプトの作成

cron に登録するからスクリプト名を間違えないように。

# vi /usr/local/bin/renew-pve-certs.sh
   

#!/usr/bin/sh

cp /etc/letsencrypt/live/pve.example.com/fullchain.pem /etc/pve/local/pveproxy-ssl.pem
cp /etc/letsencrypt/live/pve.example.com/privkey.pem /etc/pve/local/pveproxy-ssl.key
systemctl restart pveproxy

自動更新の登録

更新チェックのタイミングはお好きなように。

# vi /etc/crontab

# 以下の行を追加する。
30 6 1,15 * * root /usr/bin/certbot renew --quiet --post-hook /usr/local/bin/renew-pve-certs.sh

これで正規のサーバー証明書になった。
自動更新が正しく実行されているかとうかは2ヶ月後に判明する。

コメント

コメントする

目次
閉じる