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

Windowsはインストール時に、コンピューター名をドメイン名とした証明書をシステム内部で生成するため、非常に使いづらいです。
ただし「今後確認しない」をクリックすれば問題ありませんが、根本的な解決にはなりません。別のコンピューターから接続すると同じエラーが出るため、システム内のRDPが使用するSSL証明書を変更する必要があります。
(接続のセキュリティは問題ないのですが、主に見た目がすっきりします)
SSL証明書の申請は一般的に簡単です。ウェブサイト用とRDP用は実際には同じで、Tencent CloudやAlibaba Cloudなどの大手プロバイダーで1年間の無料SSL証明書を申請できます。以下は無料でSSL証明書を申請できるサイトです。
これらの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というファイルがあります。これが変換後のファイルです。保存しておきましょう。
このステップでは、ダウンロードまたは変換済みのxxxxx.pfx証明書をシステムにインポートします。
各種チュートリアルを見ましたが、どれもmmcコンソールでスナップインを追加し、さらに証明書管理スナップインを追加するなど複雑でした。
私が見つけた非常にシンプルな方法を紹介します。簡単で実用的です。
ここでWin+Rを開きcertlm.mscと入力し、個人→証明書 を開くと、追加した証明書が確認できます。
追加した証明書を選択して右クリック→すべてのタスク→秘密キーの管理→ユーザー→追加→詳細設定→今すぐ検索 で検索結果からNETWORK SERVICEをダブルクリックして追加しOKをクリック
ユーザーで先ほど追加したNETWORK SERVICEを選択し、権限を読み取り可能に設定してOKをクリックして終了
次に証明書をダブルクリックし、詳細タブで拇印を見つけ、値をコピーしておきます。
これで証明書の追加は完了です。
ここでは3つの方法があり、すべて動作確認済みです。
3つの方法とも再起動不要で、保存後すぐに有効になります。
PowerShell(管理者)を開いて入力:
例:
PowerShell(管理者)を開いて入力:
例:
レジストリを開き、以下のパスに移動
このパスでSSLCertificateSHA1Hashという名前のバイナリ値を新規作成し、ダブルクリックしてデータ値にSSL証明書の拇印を入力してOK
これで基本的に設定完了です。接続後もセキュリティ警告のポップアップは表示されなくなり、接続もより安全になります(すっきりしました)

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