Як надати підтверджений сертифікат сервера для підключення віддаленого робочого столу (RDP) до Windows 10


15

У нас в офісі є машина Windows 10 Pro, яка має відкритий порт для Інтернету для вхідних підключень до віддаленого робочого столу ("хост"). Він добре захищений складним паролем і обмеженою кількістю дозволених спроб і лише TLS 1.1 або новішої версії, але в ньому немає сертифікованого зовнішнім сертифікатом SSL, лише самогенерований самопідписаний, який надає Служби віддаленого робочого столу, і це дає нам дві проблеми:

  1. Ми не можемо бути повністю впевненими при віддаленому підключенні, ми дійсно підключаємося до цієї машини, а не якесь захоплене з'єднання.
  2. На нашому сайті не проводиться перевірка відповідності PCI-DSS 3.1 (необхідна, оскільки ми використовуємо там дебетову / кредитну карту, яка підключається через Інтернет). Чек повідомляє про фатальні помилки на цьому порту віддаленого робочого столу, що звертається до Інтернету: "Сертифікат самопідписання SSL" та "Сертифікат SSL з неправильним іменем хоста".

Як я можу отримати апарат Windows 10 Pro (або Windows 7/8 / 8.1 Pro), який виступає сервером / хостом, щоб представити належний сертифікат SSL для перевірки віддаленого робочого столу?


1
Ви можете розмістити самопідписаний сертифікат у сховищі сертифікатів кожної машини, яка підключиться до цієї машини, таким чином, довіряйте лише цьому самопідписаному сертифікату. Ви також можете отримати сертифікат, підписаний CA та за замовчуванням, оскільки CA є довіреним, сертифікат, який хочете використовувати, буде довірений. Ви не зможете вирішити проблеми з дотриманням вимог PCI-DSS 3.1, якщо не отримаєте сертифікат, підписаний CA. Ви повинні це зробити.
Рамхаунд

Дякую @Ramhound, ти абсолютно прав, мені потрібен сертифікат, підписаний CA - у мене зараз такий.
gogoud

Відповіді:


16

Ви можете встановити цей хост-апарат таким чином, щоб таким чином використовувати та представляти свій (існуючий, придбаний) сертифікат SSL із зовнішнім підтвердженням (інструкції, ймовірно, також працюють для Windows 8 та 8.1, можуть працювати, а можуть і не працювати для Windows 7) (частини цього засновані на Microsoft КБ 2001849 ):

По-перше, вам потрібно придбати справжній підтверджений сертифікат ssl.

Якщо у вас є цей сертифікат у файлі формату pkcs12 (наприклад, розширення pfx), ви можете переглядати відбитки пальців SHA1 за допомогою Linux або Cygwin (знадобиться він нижче):

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

Якщо у вас є окремі файли сертифікатів на вашому сервері Linux за адресою / etc / ssl (/etc/ssl/certs/mysite.crt, /etc/ssl/mysite.ca-bundle та /etc/ssl/private/mysite.key ) Ви можете створити файл pfx і отримати відбиток SHA1 таким чином:

  1. Створіть файл pfx для свого сертифіката, якщо у вас його ще немає (тут: mysite.pfx) - встановіть хороший пароль, коли запитаєте:

    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. Перемістіть або скопіюйте цей файл pfx за потребою, щоб він був доступний для вашої хост-машини Windows.

  3. Перегляньте відбиток ключа SHA1 (вам знадобиться це нижче):

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

Імпортуйте файл формату pkcs12 (наприклад, pfx) у сховище персональних сертифікатів хост-машини:

  1. Старт> Виконати> mmc
  2. Файл> Додати Видалити оснащення> Сертифікати> Додати> Обліковий запис комп'ютера> Локальний комп'ютер> ОК
  3. У лівому вікні правою кнопкою миші клацніть на Сертифікати (локальний комп'ютер) Особисті, виберіть Усі завдання / імпорт…
  4. Знайдіть файл pfx та імпортуйте його, я пропоную, що з міркувань безпеки ви не робите його для експорту.
  5. Розширюючи ваші особисті / сертифікати, тепер ви повинні побачити 3 сертифікати, один з яких - сертифікат вашого сайту (наприклад, mysite.com). Клацніть правою кнопкою миші сертифікат цього сайту та клацніть правою кнопкою миші, виберіть Усі завдання / Керування приватними ключами…
  6. Додайте користувача "МЕРЕЖА СЕРВІС" лише з дозволу читання (не повного контролю), а потім застосувати
  7. Закрити mmc

Використовуйте regedit, щоб додати нове Бінарне значення, яке називається SSLCertificateSHA1Hash at HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp. Значення, яке йому потрібно, - відбиток пальця сертифіката SHA1, отриманий вище: правою кнопкою миші клацніть нове значення, виберіть "Змінити" та введіть послідовно шістнадцяткові коди (без крапки чи пробілів чи коми, букви не залежать від регістру) - є 20 шістнадцяткових пар (40 символів).

Можливо, вам доведеться перезавантажити хост-машину або перезапустити Служби віддаленого робочого столу (з Services.msc), перш ніж вона запрацює.

Тепер, зробивши підключення віддаленого робочого столу до цього хоста за допомогою правильної назви сайту (наприклад, mysite.com), ви побачите заблокований замок у лівій частині верхньої панелі з'єднання: натискання на це показує, що особистість віддаленого комп'ютер був перевірений. Порт, відкритий від Інтернету до цього хоста, тепер повинен пройти тестування імен хостів PCI-DSS 3.1.


Я хотів би віддати вам кілька тисяч разів. Це працює 100%
Shockwaver

9

Ось основні кроки, які я використовую:

Отримайте дійсний сертифікат для хоста, (він не повинен надходити із зовнішнього CA, але всі ваші машини повинні йому довіряти). Переконайтеся, що воно має правильне ім’я хоста, у мене виникли проблеми із символами символів.

Встановіть cert на хост, наприклад:

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

знайдіть відбиток для керта, або в інтерфейсі, або в PowerShell:

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

тепер скажіть Remote Desktop використовувати цей сертифікат:

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

не потрібно перезавантаження


Мій підстановочний SSL Cert працював нормально, але мені все одно довелося відкрити MMC та додати дозвіл на мережеві послуги, інакше це не працюватиме.
FreeSoftwareServers

Мені вдалося імпортувати символи cerrt на "Windows 10", а також на "Windows Server 2016" із уловкою, що для Windows Server немає certutil.exe. Це не велика справа, оскільки ви можете вручну імпортувати mycert.pfx в магазин зберігання. Мені не потрібно було відкривати MMC і не додавали дозвіл на мережеві послуги.
TMT

1

Мій сертифікат постачається з 2-х файлів, необхідних, domain.crt& domain.ca-bundle& тоді я отримую свою інформацію domain.keyвід створення запиту.

Ось як я налаштував його за допомогою VM Linux для комбінування certs та генерування відбитків пальців та CMD для встановлення хоста. Це дозволяє повне сценарій налаштування.

Найбільші відмінності між моєю і @gogoud відповіді:

  • Я не редагую реєстр. Я спробував це, і це не вийшло, я використовую wmic /namespace:через підказку CMD.
  • Я розробив лінію "Fingerprint" на Linux VM, щоб зняти всі непотрібні частини thumbprint і розмістити його у форматі, який хоче Windows. (IE: Ні колонок, ні слів, лише відбитки пальців з малої літери).
  • Я також писав сценарії, додаючи NETWORK SERVICEдозволи.

Складіть каталог для роботи та перемістіть у нього 3 файли:

domain.ca-bundle  domain.crt  domain.key 

Створіть ключ формату pfx:

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

Експорт SSLCertificateSHA1Hash / FingerPrint у файл TXT:

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

Імпортувати сертифікат до Windows (Відкрите запит піднятого CMD):

  • Це можна додатково прописати за допомогою перемикача "-p MyPassword"

    certutil.exe -importpfx C:\domain.pfx
    

Тепер додайте SSLCertificateSHA1Hash до RDP-Tcp за допомогою CMD (Підвищений запит CMD):

set /p FingerPrint=<C:\SSLCertificateSHA1Hash.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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.