Windows Remote DesktopにSSL証明書を設定する
Windows Remote Desktop(通称RDP)はWindowsに標準搭載されているリモートデスクトップソフトウェアで、ユーザーがネットワーク経由である場所から別のコンピューターにリモートアクセスして操作できます。SSL暗号化接続、クロスプラットフォーム対応、シームレスな操作などの利点があります。
クロスプラットフォームと操作については省略しますが、このSSL暗号化接続についてですが、なんとデフォルトでSSL暗号化が有効になっているのに、使用されている証明書はWindowsシステムが自動生成した自己署名証明書です。Microsoftが何を考えているのかわかりません。本記事ではWindowsシステムのレジストリを修正してリモートデスクトップのSSL証明書を変更する方法を詳しく解説します。
これはインターネット上で最も簡単な方法のはずです(たぶん)
Windowsコンピューターにリモート接続する際、通常「このリモートコンピューターの身元を確認できません」というウィンドウが表示されます。つまり、接続先アドレスと証明書が一致していないということです。

Windowsはインストール時に、コンピューター名をドメイン名とした証明書をシステム内部で生成するため、非常に使いづらいです。
ただし「今後確認しない」をクリックすれば問題ありませんが、根本的な解決にはなりません。別のコンピューターから接続すると同じエラーが出るため、システム内のRDPが使用するSSL証明書を変更する必要があります。
(接続のセキュリティは問題ないのですが、主に見た目がすっきりします)
1.SSL証明書の申請
SSL証明書の申請は一般的に簡単です。ウェブサイト用とRDP用は実際には同じで、Tencent CloudやAlibaba Cloudなどの大手プロバイダーで1年間の無料SSL証明書を申請できます。以下は無料でSSL証明書を申請できるサイトです。
- Alibaba Cloud(証明書有効期間3ヶ月)(変換不要)
- Tencent Cloud(
証明書有効期間1年)(現在は3ヶ月のみ、acmeの方がおすすめ)(変換不要) - FreeSSL(証明書有効期間3ヶ月)(使ったことがないので不明)
- acme.sh(証明書有効期間3ヶ月)(唯一の神!)
これらのSSL証明書は有料版はおすすめしません。エンタープライズ向けの最高レベル暗号化証明書は私たちのような一般人が使うものではありません(お金持ちなら話は別ですが)
2.SSL証明書の変換
(このステップはAlibaba CloudやTencent Cloudで申請した証明書の場合はスキップできます。これらのプロバイダーは公式でPFX証明書のダウンロードを提供しています)
Windowsで使用される証明書は、普段使用するxxxxx.keyやxxxxx.crtとは異なります。Windowsで使用される証明書はPKCS#12証明書規格で、通常xxxxx.pfxという形式です。ほとんどの証明書は発行後keyとpem形式なので、Windowsで使用するにはpfxに変換する必要があります。
注意!古いシステムは最新のSSL暗号化プロトコルをサポートしていません。例えばWindows Server 2012R2などです。古いシステム用に証明書を変換する際はOpenSSLのバージョンに注意してください
ここではOpenSSLをダウンロードして変換します。Win64 Light版で十分です。OpenSSL3.XバージョンはWindows Server 2012R2などの古いシステムをサポートしていません。古いシステムで使用する場合はOpenSSL1.Xバージョンをダウンロードしてください! ダウンロード後、任意のディレクトリにインストールし、インストールパスを覚えておいてください。
OpenSSLのインストールパスの/binディレクトリを開き、申請した証明書を入れた後、pemファイルとkeyファイルをmyssl.pemとmyssl.keyにリネームします。
配置後、cmdを開いてこのディレクトリにcdし、以下のコマンドを入力してEnterを押します。
秘密鍵のパスワードを2回入力するよう求められます。このパスワードは証明書追加時に使用するので覚えておいてください。
完了後、このディレクトリ内にmyssl.pfxというファイルがあります。これが変換後のファイルです。保存しておきましょう。
3.SSL証明書の追加
このステップでは、ダウンロードまたは変換済みのxxxxx.pfx証明書をシステムにインポートします。
各種チュートリアルを見ましたが、どれもmmcコンソールでスナップインを追加し、さらに証明書管理スナップインを追加するなど複雑でした。
私が見つけた非常にシンプルな方法を紹介します。簡単で実用的です。
- PFX証明書をデスクトップに置きます(どこでもOK、便利な場所で)。ダブルクリックして証明書インポートウィザードを開きます
- 保存場所は「ローカルコンピューター」を選択
- インポートファイルは既に選択されているので、そのまま次へ
- パスワードを入力。このパスワードは証明書ダウンロード時の圧縮ファイルに含まれているパスワード、または変換時に2回入力したパスワードです
- 証明書ストアの場所は「個人」を選択
- 完了をクリックしてインポート成功
ここでWin+Rを開きcertlm.mscと入力し、個人→証明書 を開くと、追加した証明書が確認できます。
追加した証明書を選択して右クリック→すべてのタスク→秘密キーの管理→ユーザー→追加→詳細設定→今すぐ検索 で検索結果からNETWORK SERVICEをダブルクリックして追加しOKをクリック
ユーザーで先ほど追加したNETWORK SERVICEを選択し、権限を読み取り可能に設定してOKをクリックして終了
次に証明書をダブルクリックし、詳細タブで拇印を見つけ、値をコピーしておきます。
これで証明書の追加は完了です。
4.SSL証明書の設定
ここでは3つの方法があり、すべて動作確認済みです。
3つの方法とも再起動不要で、保存後すぐに有効になります。
方法1 PowerShellを使用(新しいシステムで対応、古いシステムは非対応)
PowerShell(管理者)を開いて入力:
例:
方法2 WMICを使用(古いシステムで広くサポート、新しいシステムでは段階的に廃止)
PowerShell(管理者)を開いて入力:
例:
方法3 レジストリを修正(万能、前の2つが使えない場合に使用)
レジストリを開き、以下のパスに移動
このパスでSSLCertificateSHA1Hashという名前のバイナリ値を新規作成し、ダブルクリックしてデータ値にSSL証明書の拇印を入力してOK
これで基本的に設定完了です。接続後もセキュリティ警告のポップアップは表示されなくなり、接続もより安全になります(すっきりしました)

参考資料:阿龍のノート(公開から3時間も経たないうちに参考にしましたXD)