Cara memberikan sertifikat server terverifikasi untuk koneksi Remote Desktop (RDP) ke Windows 10

15

Kami memiliki mesin Windows 10 Pro di kantor kami yang memiliki port terbuka ke internet untuk koneksi desktop jarak jauh yang masuk ('host'). Ini dilindungi dengan baik oleh kata sandi yang kompleks dan sejumlah upaya yang diizinkan dan hanya TLS 1.1 atau lebih tinggi, tetapi tidak menyajikan sertifikat SSL yang diverifikasi secara eksternal, hanya yang dibuat sendiri yang ditandatangani sendiri yang disediakan oleh Layanan Desktop Jarak Jauh, dan ini memberi kita dua masalah:

  1. Kita tidak bisa sepenuhnya percaya diri ketika menghubungkan dari jarak jauh kita benar-benar terhubung ke mesin ini dan bukan beberapa koneksi yang dibajak.
  2. Situs kami gagal memeriksa kepatuhan PCI-DSS 3.1 (diperlukan karena kami menggunakan mesin kartu debit / kredit point-of-sale yang terhubung melalui internet). Pemeriksaan ini melaporkan kesalahan fatal pada port desktop jarak jauh yang menghadap internet ini: 'Sertifikat Ditandatangani Sendiri SSL' dan 'Sertifikat SSL dengan Nama Host Yang Salah'.

Bagaimana cara saya mendapatkan mesin Windows 10 Pro (atau Windows 7/8 / 8.1 Pro) yang bertindak sebagai server / host untuk menyajikan sertifikat SSL yang tepat untuk verifikasi Remote Desktop?

gogoud
sumber
1
Anda dapat menempatkan sertifikat yang ditandatangani sendiri ke toko sertifikat, dari setiap mesin yang akan terhubung ke mesin ini, hanya dengan cara itu sertifikat yang ditandatangani sendiri dapat dipercaya. Anda juga bisa mendapatkan sertifikat yang ditandatangani oleh CA dan secara default, karena CA dipercaya, sertifikat yang tuan rumah ingin gunakan akan dipercaya. Anda tidak akan dapat menyelesaikan masalah kepatuhan PCI-DSS 3.1 kecuali Anda mendapatkan sertifikat yang ditandatangani oleh CA. Anda harus melakukannya.
Ramhound
Terima kasih @Ramhound, Anda benar, saya perlu sertifikat yang ditandatangani CA - Saya sekarang memilikinya.
gogoud
Terkait -> serverfault.com/questions/444286/…
FreeSoftwareServers

Jawaban:

16

Anda dapat mengatur mesin host ini untuk menggunakan dan menyajikan sertifikat SSL Anda (yang sudah ada, dibeli) yang diverifikasi secara eksternal sehingga (instruksi mungkin juga berfungsi untuk Windows 8 & 8.1, mungkin atau mungkin tidak berfungsi untuk Windows 7) (bagian dari ini berdasarkan pada Microsoft KB 2001849 ):

Pertama, Anda harus membeli sertifikat ssl asli yang diverifikasi.

Jika Anda memiliki sertifikat ini dalam file format pkcs12 (mis. Ekstensi pfx), Anda dapat melihat sidik jari SHA1 menggunakan Linux atau Cygwin dengan demikian (Anda akan memerlukannya di bawah):

openssl pkcs12 -in mysite.pfx -nodes|openssl x509 -noout -fingerprint

Atau jika Anda memiliki file sertifikat individual di server Linux Anda di / etc / ssl (/etc/ssl/certs/mysite.crt, /etc/ssl/mysite.ca-bundle dan /etc/ssl/private/mysite.key ) Anda dapat membuat file pfx dan mendapatkan sidik jari SHA1 sebagai berikut:

  1. Buat file pfx untuk sertifikat Anda, jika Anda belum memilikinya (di sini: mysite.pfx) - setel kata sandi yang baik ketika diminta:

    sudo openssl pkcs12  -export -out mysite.pfx -inkey /etc/ssl/private/mysite.pem -in /etc/ssl/certs/mysite.crt -certfile /etc/ssl/mysite.ca-bundle
    
  2. Pindahkan atau salin file pfx ini sesuai kebutuhan sehingga dapat diakses oleh mesin host Windows Anda.

  3. Lihat sidik jari kunci SHA1 (Anda akan membutuhkan ini di bawah):

openssl x509 -in /etc/ssl/certs/mysite.crt -noout -fingerprint

Impor file format pkcs12 (mis. Pfx) ke toko sertifikat pribadi mesin host Windows:

  1. Mulai> Jalankan> mmc
  2. File> Tambah Hapus Snap-in> Certficates> Tambah> Akun Komputer> Komputer Lokal> OK
  3. Di jendela kiri klik kanan pada Certificates (Computer Lokal) Personal, pilih All Tasks / Import…
  4. Temukan file pfx dan impor, saya sarankan agar alasan keamanan Anda tidak membuatnya dapat diekspor.
  5. Memperluas Pribadi / Sertifikat Anda sekarang Anda akan melihat 3 sertifikat, salah satunya adalah sertifikat situs Anda (mis. Mysite.com). Klik kanan pada sertifikat situs ini dan klik kanan, pilih Semua Tugas / Kelola Kunci Pribadi ...
  6. Tambahkan pengguna 'LAYANAN JARINGAN' hanya dengan izin Baca (bukan Kontrol Penuh), lalu Terapkan
  7. Tutup mmc

Gunakan regedit untuk menambahkan Nilai Biner baru yang disebut SSLCertificateSHA1Hash di HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp. Nilai yang dibutuhkan adalah sidik jari SHA1 dari sertifikat yang diperoleh di atas: klik kanan pada nilai baru, pilih Modify dan kemudian ketik kode hex secara berurutan (tanpa titik dua atau spasi atau koma, huruf tidak peka terhadap huruf besar-kecil) - ada 20 heks pasangan dalam semua (40 karakter).

Anda mungkin perlu me-reboot mesin host, atau me-restart Layanan Desktop Jarak Jauh (dari Services.msc) sebelum akan bekerja.

Sekarang, setelah membuat koneksi desktop jarak jauh ke host ini menggunakan nama situs yang benar (misalnya mysite.com), Anda akan melihat gembok terkunci di sisi kiri bilah koneksi atas: mengklik ini menunjukkan bahwa identitas remote komputer telah diverifikasi. Port yang terbuka dari internet melalui host ini sekarang harus lulus pengujian hostname PCI-DSS 3.1.

gogoud
sumber
Saya ingin mengubah Anda beberapa ribu kali. Ini bekerja 100%
Shockwaver
9

Berikut langkah-langkah dasar yang saya gunakan:

Dapatkan sertifikat yang valid untuk tuan rumah, (itu tidak harus berasal dari CA eksternal, tetapi semua mesin Anda harus memercayainya). Pastikan ia memiliki nama host yang benar, saya punya masalah dengan sertifikat wildcard.

Instal sertifikat pada host, seperti:

certutil.exe -p myPassword -importPFX c:\mycert.pfx noExport

temukan cap jempol untuk sertifikat, baik di UI atau di PowerShell:

$tp = (ls Cert:\LocalMachine\my | WHERE {$_.Subject -match "something unique in your certs subject field" } | Select -First 1).Thumbprint

sekarang beri tahu Remote Desktop untuk menggunakan sertifikat itu:

& wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="$tp" 

tidak perlu reboot

Peter Hahndorf
sumber
Sertifikat SSL wildcard saya berfungsi dengan baik, tetapi saya masih harus membuka MMC dan Menambahkan Izin Layanan Jaringan atau itu tidak akan berfungsi.
FreeSoftwareServers
Saya dapat mengimpor sertifikat wildcard pada "Windows 10" dan "Windows Server 2016" dengan catatan bahwa Windows Server tidak memiliki certutil.exe. Itu bukan masalah besar karena Anda dapat mengimpor mycert.pfx secara manual ke toko cert. Saya tidak perlu membuka MMC dan tidak menambahkan Izin Layanan Jaringan.
TMT
1

Sertifikasi saya dilengkapi dengan 2 file yang diperlukan, domain.crt& domain.ca-bundle& kemudian saya punya domain.keydari saya membuat permintaan.

Inilah cara saya mengaturnya menggunakan Linux VM untuk menggabungkan sertifikat dan menghasilkan sidik jari dan windows CMD untuk mengatur host. Ini memungkinkan pembuatan skrip lengkap.

Perbedaan terbesar antara jawaban saya dan @ gogoud adalah:

  • Saya tidak mengedit registri. Saya mencoba itu dan tidak berhasil, saya gunakan wmic /namespace:melalui CMD prompt.
  • Saya menyesuaikan garis "Sidik Jari" pada Linux VM untuk menghapus semua bagian yang tidak perlu dari sidik jari dan memasukkannya ke dalam format yang diinginkan Windows. (IE: Tidak ada titik dua, tanpa kata-kata, hanya Sidik Jari dengan huruf kecil).
  • Saya juga menulis skrip untuk menambahkan NETWORK SERVICEizin.

Buat direktori untuk bekerja dan pindahkan 3 file ke dalamnya:

domain.ca-bundle  domain.crt  domain.key 

Buat kunci format pfx:

sudo openssl pkcs12  -export -out domain.pfx -inkey *.key -in *.crt -certfile *.ca-bundle

Ekspor SSLCertificateSHA1Hash / FingerPrint ke TXT File:

sudo openssl x509 -in *.crt -noout -fingerprint | sed -e 's/SHA1 Fingerprint=//g' | sed -e 's/://g' | tr '[:upper:]' '[:lower:]' > SSLCertificateSHA1Hash.txt

Impor Sertifikat ke Windows (Buka Konfirmasi CMD Tinggi):

  • Ini dapat ditulis lebih lanjut melalui saklar "-p MyPassword"

    certutil.exe -importpfx C:\domain.pfx
    

Sekarang tambahkan SSLCertificateSHA1Hash ke ke RDP-Tcp via CMD (Elevated CMD Prompt):

set /p FingerPrint=<C:\SSLCertificateSHA1Hash.txt
wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="%FingerPrint%"

Anda harus menambahkan izin pengguna "Layanan Jaringan" dengan "Hanya Baca" sekarang:

icacls.exe "C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys\*" /grant "NETWORK SERVICE":R

Nyalakan Ulang Host:

 shutdown /r /t 5
FreeSoftwareServers
sumber