ProxmoxのHTTPS警告「保護されていない通信」を消す簡単な方法

# 1. はじめに
Proxmox VEの管理画面はHTTPSでアクセス可能ですが、自己署名証明書が使われているためアクセスすると「保護されていない通信」や「この接続ではプライバシーが保護されません」といった警告が出ます。

Let’s EncryptやCloudflare Tunnelなどを使って証明書を外部発行する方法もありますが、自宅ラボのような閉じたLAN環境では少し大げさです。本記事では最も手軽にこの警告を消す方法を紹介します。

# 2. 問題の背景 -- 「保護されていない通信」とは？
Proxmoxにアクセスしたとき、URLバーに「保護されていない通信」と表示されるのは、自己署名のCA（証明書発行元）でサーバ証明書を作っているため、SSL/TLS証明書の発行元が信頼されていないからです。これだけではブラウザから信頼されず、以下のような警告が表示されます：

- 「この接続ではプライバシーが保護されません」という警告画面が表示される  
　詳細→◯◯ にアクセスする（安全ではありません）をクリックすればアクセス出来るもののひと手間かかります
- アドレスバーに「🔒」ではなく「ⓧ保護されていない通信」が表示される

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4077625/2b0077bd-1cef-4f76-a5d0-0a6eeaa760cc.png" width="700px">

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4077625/75f4d9ab-6e00-4d5e-93e1-2efcd16a7294.png" width="500px">


# 3. 解決方法の概要：自己署名ルート証明書の信頼
自己署名証明書であっても、その証明書を発行したルート証明書（CA証明書）を手動で信頼させれば解決します。Proxmoxでは `/etc/pve/pve-root-ca.pem` がそのルート証明書なので、これを利用端末（Windowsなど）で「信頼されたルート証明機関」に追加すればOKです。

# 4. 実際の手順
## 4.1 ルート証明書をWindowsマシンへコピーする
ProxmoxサーバからWindowsマシンへ`/etc/pve/pve-root-ca.pem`をコピーします（USBメモリでもSCPでもOKです）。

例えばTera Termではメニューバーの「ファイル」→「SSH SCP」で簡単にリモートからのファイルコピーが可能です。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4077625/93ea2355-b245-415f-87d3-56124f34fc73.png" width="210px">

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4077625/1de0e2d3-78b6-4d7f-83e4-947478e333d5.png" width="500px">

## 4.2 拡張子を .crt へ変更する
Windowsでは拡張子 `.crt` が証明書ファイルとして扱われるためリネームします。

## 4.3 ルート証明書をインポートする
`pve-root-ca.crt` をダブルクリックしてウィザードを以下のように進めます。

1. 右下の「証明書のインストール」ボタンをクリック
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4077625/29764184-b0e7-4a4e-bdf8-5c501c1ef07a.png" width="400px">

2. 「現在のユーザー」もしくは「ローカルコンピューター」を選択し「次へ」  
    自身しか使用しないのであれば前者でも大丈夫です。後者は管理者権限が必要です。
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4077625/d55a92c5-fb50-4ea8-9d2a-33e7c97cfa24.png" width="400px">
    

3. 「証明書をすべて次のストアに配置する」→「信頼されたルート証明機関」を指定し「次へ」
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4077625/e9461b03-d1f0-4e1a-af08-caccb74881a0.png" width="400px">

    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4077625/29505913-e7e1-4015-b3c2-1f1b976c7a3a.png" width="300px">


    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4077625/7ea7d0e2-b670-4f15-a5a6-ed5cb98ca38f.png" width="400px">

    この警告は「この証明書を本当に信頼していいか？」という確認です。Proxmoxサーバーを自分で管理している環境であれば「はい」を選んで問題ありません。
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4077625/343a14a1-ace0-4a77-b0a4-d6f81340e7d6.png" width="400px">

    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4077625/5640d48b-2e12-4c85-ace1-2fe5bd03804d.png" width="200px">

    有効期間はインストール時点から10年となっていました。
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4077625/e79fc437-3899-4c9f-88e4-c11111e064ee.png" width="400px">

4. ブラウザを再起動してアクセスしなおす

    これで警告表示がなくなりました。

    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4077625/f4cf61da-c88a-48e6-be96-f48929622eb7.png" width="300px">


macでも同様にルート証明書をキーチェーンアクセスでインポートすれば信頼させることができます。
（環境がないので手順を示せずすみません）

# 5. トラブルシューティング
ブラウザを再起動するのが面倒な場合は、シークレットモードで開けばOKです。証明書の登録・削除を繰り返し行う際は、新しいタブを開いても反映されず、「✕ シークレット モードを終了」し、再度シークレットモード用のウィンドウを開く必要があります。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4077625/abea9004-1ee2-4001-82ed-9905e88fe321.png" width="300px">


# 6. 信頼した証明書の保管場所
1. Windowsキー + R を押して「ファイル名を指定して実行」を開きます。
2. 「certmgr.msc」と入力して Enter（証明書マネージャーが開きます）。
3. 左ペインで「信頼されたルート証明機関 → 証明書」を選択します。
4. 右側にインストールされている証明書一覧が表示されます。
5. 発行元が「Proxmox Virtual Environment」となっているのが今回信頼したルート証明書です。

![certmgrの画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4077625/22cdb07f-f199-464f-b465-01761ca0bd84.png)

# 7. 多数のマシンへ適用させるには
1. GPOで配布する  
    詳細は割愛しますが、Active Directoryドメインを使っているのであれば、ドメインコントローラー側でこの証明書をインポートしておくことで全PCに配布できます。

2. PowerShell（要 管理者権限）  
    以下のスクリプトを管理者権限で起動したPowerShellで実行することで半自動化できます。このコマンドなら確認ダイアログも表示されないので自宅ラボ用途ならおすすめです。

    ```powershell:import-root-cert.ps1
    # 証明書ファイルのパス
    $certPath = "格納しているフォルダ\pve-root-ca.cer"

    # 「ローカルコンピューター」の "信頼されたルート証明機関" ストアに追加
    Import-Certificate -FilePath $certPath -CertStoreLocation Cert:\LocalMachine\Root
    ```

# 8. まとめ
LAN内だけで使うProxmoxであれば、わざわざLet's EncryptやCloudflareを導入する必要はありません。自己署名のルート証明書をWindowsに取り込むだけで、簡単に「安全な接続」を実現できます。
Proxmoxに限った話ではないのですが、検証環境や自宅ラボの運用を快適にしたい方におすすめです。

# 9. 参考情報
公式ドキュメントに今回用いた証明書の所在や、カスタム証明書を利用する手順の紹介があります。
https://pve.proxmox.com/pve-docs/pve-admin-guide.html#sysadmin_certificate_management