กำหนดค่าใบรับรอง SSL ที่กำหนดเองสำหรับ RDP บน Windows Server 2012 ในโหมดการดูแลระบบระยะไกล?


52

ดังนั้นการเปิดตัว Windows Server 2012 จึงมีการลบยูทิลิตีการกำหนดค่าเดสก์ท็อประยะไกลที่เกี่ยวข้องจำนวนมากออกไป โดยเฉพาะอย่างยิ่งไม่มียูทิลิตี้การกำหนดค่าโฮสต์เซสชันเดสก์ท็อประยะไกลระยะไกลอีกต่อไปที่ให้คุณเข้าถึงกล่องโต้ตอบคุณสมบัติ RDP-Tcp ที่ให้คุณกำหนดค่าใบรับรองที่กำหนดเองสำหรับ RDSH ที่จะใช้ ในที่นี้เป็น GUI ที่รวมใหม่ที่ดีซึ่งเป็นส่วนหนึ่งของเวิร์กโฟลว์ "แก้ไขคุณสมบัติการปรับใช้" โดยรวมใน Server Manager ใหม่ สิ่งที่จับได้คือคุณจะสามารถเข้าถึงเวิร์กโฟลว์นั้นได้เฉพาะเมื่อคุณติดตั้งบทบาท Remote Desktop Services (เท่าที่ฉันสามารถบอกได้)

ดูเหมือนว่าการกำกับดูแลในส่วนของ Microsoft เราจะกำหนดค่าใบรับรอง SSL ที่กำหนดเองสำหรับ RDP บน Windows Server 2012 ได้อย่างไรเมื่อทำงานในโหมดการดูแลระยะไกลเริ่มต้นโดยไม่จำเป็นต้องติดตั้งบทบาทบริการเดสก์ท็อประยะไกลโดยไม่จำเป็น


ที่เกี่ยวข้อง -> superuser.com/questions/1093159/…
FreeSoftwareServers

คำตอบ:


80

ปรากฎว่าข้อมูลการกำหนดค่าส่วนใหญ่สำหรับ RDSH ถูกเก็บไว้ในWin32_TSGeneralSettingคลาสใน WMI ในroot\cimv2\TerminalServicesเนมสเปซ SSLCertificateSHA1Hashใบรับรองการกำหนดค่าสำหรับการเชื่อมต่อให้มีการอ้างอิงจากค่ารหัสประจำตัวของใบรับรองที่เกี่ยวกับคุณสมบัติที่เรียกว่า


UPDATE:ต่อไปนี้เป็นโซลูชัน Powershell ทั่วไปที่คว้าและกำหนดรหัสประจำตัวของใบรับรอง SSL ตัวแรกในร้านส่วนตัวของคอมพิวเตอร์ หากระบบของคุณมีหลาย certs คุณควรเพิ่ม-Filterตัวเลือกในgciคำสั่งเพื่อให้แน่ใจว่าคุณอ้างอิงใบรับรองที่ถูกต้อง ฉันได้ทิ้งคำตอบดั้งเดิมไว้ไว้ด้านล่างนี้เพื่อการอ้างอิง

# get a reference to the config instance
$tsgs = gwmi -class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices -Filter "TerminalName='RDP-tcp'"

# grab the thumbprint of the first SSL cert in the computer store
$thumb = (gci -path cert:/LocalMachine/My | select -first 1).Thumbprint

# set the new thumbprint value
swmi -path $tsgs.__path -argument @{SSLCertificateSHA1Hash="$thumb"}

เพื่อที่จะได้รับค่ารหัสประจำตัว

  1. เปิดกล่องโต้ตอบคุณสมบัติสำหรับใบรับรองของคุณและเลือกแท็บรายละเอียด
  2. เลื่อนลงไปที่ฟิลด์ Thumbprint และคัดลอกสตริง hex ที่คั่นด้วยช่องว่างลงในสิ่งที่ต้องการ Notepad
  3. ลบช่องว่างทั้งหมดออกจากสตริง นอกจากนี้คุณยังต้องระวังและลบอักขระที่ไม่ใช่ ASCII ซึ่งบางครั้งจะถูกคัดลอกก่อนอักขระตัวแรกในสตริง มันมองไม่เห็นใน Notepad
  4. นี่คือค่าที่คุณต้องตั้งค่าใน WMI ควรมีลักษณะบางอย่างเช่นนี้1ea1fd5b25b8c327be2c4e4852263efdb4d16af4

ตอนนี้คุณมีค่ารหัสประจำตัวแล้วต่อไปนี้เป็นหนึ่งซับที่คุณสามารถใช้เพื่อตั้งค่าโดยใช้ wmic:

wmic /namespace:\\root\cimv2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="THUMBPRINT"

หรือหาก PowerShell เป็นของคุณคุณสามารถใช้สิ่งนี้แทน:

$path = (Get-WmiObject -class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices -Filter "TerminalName='RDP-tcp'").__path
Set-WmiInstance -Path $path -argument @{SSLCertificateSHA1Hash="THUMBPRINT"}

หมายเหตุ:ใบรับรองจะต้องอยู่ในที่เก็บใบรับรอง 'ส่วนบุคคล' สำหรับบัญชีคอมพิวเตอร์


3
แค่อยากจะเพิ่มว่าสิ่งนี้ช่วยฉันจากการล่มสลายที่บริสุทธิ์ ขอขอบคุณ. การติดตั้งบทบาทและการรีสตาร์ทเซิร์ฟเวอร์ตามที่แนะนำในเทคโนโลยี่และสิ่งที่คล้ายกันนั้นไร้สาระ แม้กระนั้นเมื่อคุณติดตั้งใบรับรอง SSL ในตัวจัดการเกตเวย์ RD ก็ไม่ได้ดำเนินการผ่านการเข้าสู่ระบบผู้ดูแลระบบระยะไกล
Papa

2
ขอบคุณมากสำหรับสิ่งนี้ ฉันต้องค้นหาgoogle ทั้งหมดก่อนจึงจะพบสิ่งนี้ มีผลลัพธ์มากเกินไปที่บอกให้ฉันติดตั้ง "บริการเดสก์ท็อประยะไกล" ผ่านทาง "เพิ่มบทบาทและคุณสมบัติ" แต่การทำเช่นนั้นต้องการให้คุณเข้าร่วมโดเมน
Sethi

2
ถ้าฉันลองทำโดยใช้สคริปต์ PS ของคุณฉันจะได้รับ "พารามิเตอร์ไม่ถูกต้อง" ปัญหาเดียวกันถ้าผมทำมันด้วยตนเองเกินไป ...
deed02392

1
ฉันได้รับอาร์กิวเมนต์ไม่ถูกต้องโดยใช้วิธีการทั้งหมดจนกว่าฉันจะนำเข้าใบรับรองอีกครั้งรวมถึงคีย์ส่วนตัว ความผิดพลาดง่าย ๆ
toffitomek

2
ฉันอีกครั้ง: D ฉันได้รับข้อผิดพลาด "พารามิเตอร์ไม่ถูกต้อง" ใน Powershell wmicเกินไปเมื่อทำงาน เพิ่งเห็นข้อความที่ด้านล่าง ตรวจสอบให้แน่ใจว่าใบรับรองอยู่ในร้านค้าส่วนบุคคลด้วย เหมืองแร่อยู่ในร้านค้าเว็บโฮสติ้งในครั้งนี้ ...
Sethi

4

หากคุณได้รับ "พารามิเตอร์ไม่ถูกต้อง" เมื่อคุณลองใช้วิธีแก้ปัญหาของ Ryan ตรวจสอบให้แน่ใจว่าคุณใช้พรอมต์คำสั่งแบบยกระดับ (เรียกใช้ในฐานะผู้ดูแลระบบ)


ไม่อยากเชื่อเลยว่านี่ไม่มีการโหวต!
Adrian Godong

0

คุณต้องของคุณและลายนิ้วมือในไฟล์domain.pfx TXTSSLCertificateSHA1Hash.txt

จากนั้นเรียกใช้งานใน CMD:

pushd %~dp0
cls
::FreeSoftwareServers.com

certutil.exe -p "" -importpfx "%~dp0domain.pfx"
set /p FingerPrint=<"%~dp0SSLCertificateSHA1Hash.txt"
wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="%FingerPrint%"
icacls.exe "C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\*" /grant "NETWORK SERVICE":R
shutdown /r /t 5
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.