Вопрос: Как предоставить проверенный сертификат сервера для подключений удаленного рабочего стола (RDP) к Windows 10


У нас есть компьютер 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 для проверки удаленного рабочего стола?


4
2018-06-24 14:40


Источник


Вы можете либо поместить самозаверяющий сертификат в хранилище сертификатов, и на каждом компьютере, который будет подключаться к этому компьютеру, таким образом, только тот самозаверяющий сертификат будет доверен. Вы также можете получить сертификат, подписанный ЦС, и по умолчанию, поскольку CA доверен, сертификат, который хост хочет использовать, будет доверен. Вы не сможете решить свои проблемы с соблюдением PCI-DSS 3.1, если вы не получите сертификат, подписанный CA.  Вы должны это сделать. - Ramhound
Спасибо @Ramhound, вы совершенно правы, мне нужен сертификат с сертификатом CA - теперь у меня его есть. - gogoud


Ответы:


Вы можете установить этот хост-компьютер для использования и представления вашего (существующего, приобретенного) сертификата с подтвержденным внешне SSL-сертификатом (инструкции, вероятно, также работают для Windows 8 и 8.1, могут или не могут работать для Windows 7) (части этого основаны на Microsoft KB 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) в хранилище личных сертификатов хоста Windows:

  1. Пуск / Выполнить / ММС
  2. Файл / Добавить Удалить привязку / Сертификаты / Добавить / Учетная запись компьютера / Локальный компьютер / OK
  3. В левом окне щелкните правой кнопкой мыши Сертификаты (Локальный компьютер) / Личный, выберите «Все задачи / Импорт ...».
  4. Найдите файл pfx и импортируйте его, я предлагаю, что по соображениям безопасности вы не делаете его экспортируемым.
  5. При расширении личных / сертификатов вы должны увидеть 3 сертификата, один из которых - ваш сертификат сайта (например, mysite.com). Щелкните правой кнопкой мыши на этом сертификате сайта и щелкните правой кнопкой мыши, выберите «Все задачи / Управление приватными ключами» ...
  6. Добавить пользователя «NETWORK SERVICE» только с разрешения на чтение (не полный контроль), затем Apply
  7. Закрыть mmc

Используйте regedit для добавления нового двоичного значения, называемого SSLCertificateSHA1Hash, в HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Terminal Server \ WinStations \ RDP-Tcp. Требуемое значение - это отпечаток SHA1 сертификата, полученного выше: щелкните правой кнопкой мыши новое значение, выберите «Изменить» и затем введите шестнадцатеричные коды последовательно (без двоеточий или пробелов или запятых, буквы не учитывают регистр) - есть 20 шестнадцатеричных пар всего (40 символов).

Возможно, вам придется перезагрузить хост-компьютер или перезапустить службы удаленного рабочего стола (из Services.msc), прежде чем он будет работать.

Теперь, после подключения удаленного рабочего стола к этому хосту с использованием правильного имени сайта (например, mysite.com), вы должны увидеть заблокированный замок на левой стороне верхней панели соединений: нажатие на это показывает, что идентификатор удаленного компьютер был проверен. Порт, открытый от Интернета до этого хоста, должен теперь пройти тестирование имени хоста PCI-DSS 3.1.


8
2018-06-24 14:40



Большое спасибо. Я использую эти точные шаги на своих машинах, и он работает хорошо. - Peter Berbec


Вот основные шаги, которые я использую:

Получите действительный сертификат, который для хоста (он не должен поступать из внешнего ЦС, но все ваши машины должны доверять ему). Убедитесь, что у него правильное имя хоста, у меня были проблемы с сертификатами подстановочных знаков.

Установите сертификат на хост, например:

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

теперь скажите удаленному рабочему столу, чтобы использовать этот сертификат:

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

не требуется перезагрузка


3
2018-06-24 19:48