Haru

Haru

Windowsリモートデスクトップの証明書の配置

0x00 背景#

RDP(Windows Remote Desktop)を使用する際、IP アドレスまたはドメイン名を入力しても、「リモートコンピュータの識別情報を検証できません。接続を続行しますか?」というメッセージが表示されます。

一方、macOS デバイスでは、次のようなメッセージが表示されます。Windows のメッセージと同様の意味で、接続先のコンピュータが信頼されていない証明書を使用していることを示しています。

証明書の警告メッセージ

この証明書は、Windows のインストールプロセス中にコンピュータ名をドメイン名とする証明書としてインストールされ、信頼されていないためです。Windows では「次回から表示しない」を選択すると表示されなくなりますが、macOS クライアントでは引き続きこのメッセージが表示されます。したがって、この証明書の問題を完全に解決するには、接続先のコンピュータシステムで使用される RDP の SSL 証明書ファイルを変更する必要があります。

以下の手順に進む前に、ドメイン名と対応する証明書ファイルをすでに持っていることを確認してください。

0x01 前提条件#

国内のクラウドプロバイダ(例:Alibaba Cloud、Tencent Cloud など)が提供する証明書を使用する場合、バックアップとして PFX 証明書をダウンロードできます。また、acme.shを使用して取得した証明書には、your.domain.keyyour.domain.crtが含まれています。ただし、Windows ではこの種類の証明書を直接使用することはできず、PKCS#12標準証明書(通常はyour.domain.pfxとして言及される)が使用されます。

証明書の変換にはOpenSSLを使用します。OpenSSL のインストールと証明書の申請が完了している場合、証明書の変換を開始します。

openssl pkcs12 -export -in your.domain.pem -inkey your.domain.key -out your.domain.pfx

上記のコマンドを実行すると、秘密鍵のパスワードの入力を求められます。このパスワードを覚えておき、後で証明書を追加する際に使用します。完了したら、必要なyour.domain.pfxファイルが現在の作業ディレクトリに保存されます。

0x02 証明書の追加#

前の手順で取得した証明書を Windows コンピュータにアップロードし、ダブルクリックして開くと、証明書のインポートウィザードが表示されます。

  • ストアの場所:ローカルコンピュータ
  • インポートするファイル:次へをクリックします
  • 秘密鍵の保護:前の手順で入力したパスワードを入力します
  • 証明書の保存場所:個人

完了をクリックすると、インポートが成功します。これにより、前の手順で作成した PFX 証明書ファイルが Windows にインポートされます。ただし、証明書のみをインポートしても RDP 証明書として使用する効果はありません。

ショートカットキーWin+Rを使用して、certlm.mscを入力し、ローカルコンピュータ証明書マネージャを開きます。個人→証明書の列に、先ほどインポートした証明書が表示されます。この証明書を右クリックし、すべてのタスク→秘密鍵の管理を選択し、表示されるダイアログボックスで追加をクリックし、NETWORK SERVICEを入力し、OK をクリックします。NETWORK SERVICEに読み取り権限を許可します。

NETWORK SERVICE ユーザーの検索

読み取り権限の付与

OK をクリックして権限を保存します。

再度、この証明書をダブルクリックし、詳細情報をクリックし、フィールドで指紋フィールド項目を見つけ、対応する値をコピーしてバックアップとして保存します。

0x03 SSL 証明書の設定#

この時点で、証明書の指紋をレジストリに設定する必要があります。

前述の指紋がyourprivatefingerprintであると仮定します。Windows メニューを右クリックし、管理者として PowerShell を実行し、次のコマンドを入力します。

$fingerprint = "yourprivatefingerprint"
$path = (Get-WmiObject -Namespace root\cimv2\TerminalServices -Class Win32_TSGeneralSetting -Filter 'TerminalName="RDP-Tcp"').__path
Set-WmiInstance -Path $path -argument @{SSLCertificateSHA1Hash="$fingerprint"}

これで、Windows RDP の証明書の設定が完了しました。証明書に対応するドメイン名がこの Windows コンピュータに解決されている場合、リモートデスクトップ接続時に証明書の問題が表示されなくなります。

この記事はMix Spaceからの同期更新であり、xLog にも掲載されています。
元のリンクは https://blog.allieqian.com/posts/tech/8EandzDrRKcdQn です。


読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。