0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Proxmox API を用いたカスタム証明書の更新

Last updated at Posted at 2025-10-23

すでにワイルドカード証明書を持っている場合に Proxmox にも該当の証明書を適用した場合があります。
Webコンソールから、データセンター>該当ノード>システム>証明書>カスタム証明書のアップロードの手順で更新できるのですのが、Let'sEncrypt の証明書の場合、数カ月お気に作業が必要となります。
流石に面倒なので、Proxmox の API を使ってカスタム証明書を更新する手順を調べてみました。

設定手順

API トークンの発行

"/nodes" 配下に対して Sys.Modify 権限をもった API トークンを準備する必要があります。
APIトークンは下記の手順で作成します。

  1. Sys.Modify 権限だけを持ったロールの作成
    • データセンター>アクセス権限>ロール画面から、作成ボタンを押下して、以下の内容でロールを作成します
      名前: SysModify
      権限: Sys.Modify
      
  2. ユーザの作成
    • データセンター>アクセス権限>ユーザ画面から、追加ボタンを押下して、以下の内容でユーザを作成します
      ユーザ名: sys-modify
      レルム: Linux PAM standard authentication
      
  3. APIトークンの作成
    • データセンター>アクセス権限>APIトークン画面から、追加ボタンを押下して、以下の内容でAPIトークンを作成します
      ユーザ: sys-modify@pam
      トークンID: update-cert
      権限分離: true
      
  4. ユーザへのアクセス権限の付与
    • データセンター>アクセス権限画面から、追加>ユーザのアクセス権限ボタンを押下して、以下の内容で権限を追加します
      パス: /nodes
      ユーザ: sys-modify@pam
      ロール: SysModify
      継承: true
      
  5. トークンへのアクセス権限の付与
    • データセンター>アクセス権限画面から、追加>APIトークンのアクセス権限ボタンを押下して、以下の内容で権限を追加します
      パス: /nodes
      ユーザ: sys-modify@pam!update-cert
      ロール: SysModify
      継承: true
      

転送用スクリプトの作成

下記の内容で転送用のスクリプトを作成します。

#!/bin/sh

SERVER="pve.example.com:8006"     # 環境に合わせて変えてください
NODES="pve01 pve02 pve03"         # 更新対象のノード名

API_TOKEN_ID="sys-modify@pam!update-cert"
API_TOKEN_SECRET="<<APIトークン作成時のシークレット>>"

PRIVKEY_PATH="/etc/letsencrypt/live/<<domain>>/privkey.pem"
CERT_PATH="/etc/letsencrypt/live/<<domain>>/fullchain.pem"

for node in $NODES; do
  curl -k -X POST \
    https://${SERVER}/api2/json/nodes/${node}/certificates/custom \
    -H "Authorization: PVEAPIToken=${API_TOKEN_ID}=${API_TOKEN_SECRET}" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    --data-urlencode "key=$(sudo cat ${PRIVKEY_PATH})" \
    --data-urlencode "certificates=$(sudo cat ${CERT_PATH})" \
    --data-urlencode "restart=1" \
    --data-urlencode "force=1"
done

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?