今は下の記事のとおり、管理画面の ACME 設定で運用している。
あわせて読みたい
Proxmox VE の SSL/TLS 証明書を Let’s Encrypt にする(その2)
各ノードとも既に certbot で Let’s Encrypt の証明書に変更ずみ。ところが、PVE のGUI 管理画面には 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 ログインしてターミナルから、
証明書の発行
証明書を取得する。リダイレクトの設定など不要(そもそも管理画面は port 443 で待ち受けていない)。
certbot の実行中、一時的に Web Server を起動して port 80 で待ち受けるらしい。
実行結果は次のとおり。長いから折りたたむ。
certbot 実行結果
Saving debug log to /var/log/letsencrypt/letsencrypt.log
How would you like to authenticate with the ACME CA?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Spin up a temporary webserver (standalone)
2: Place files in webroot directory (webroot)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 1
Plugins selected: Authenticator standalone, Installer None
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): hoge@example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Please enter in your domain name(s) (comma and/or space separated) (Enter 'c'
to cancel): pve.example.com
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for pve.example.com
Waiting for verification...
Cleaning up challenges
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/pve.example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/pve.example.com/privkey.pem
Your cert will expire on 2021-06-04. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
- We were unable to subscribe you the EFF mailing list because your
e-mail address appears to be invalid. You can try again later by
visiting https://act.eff.org.
スクリプトの作成
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ヶ月後に判明する。
コメント