Windows 10에 대한 RDP (원격 데스크톱) 연결을 위해 확인 된 서버 인증서를 제공하는 방법


12

우리는 사무실에 Windows 10 Pro 컴퓨터를 가지고 있으며 원격 데스크톱 연결 ( '호스트')을 위해 인터넷에 대한 열린 포트가 있습니다. 복잡한 암호와 제한된 횟수의 시도 및 TLS 1.1 이상만으로도 잘 보호되지만 외부에서 검증 된 SSL 인증서, 원격 데스크톱 서비스에서 제공하는 자체 생성 된 자체 서명 된 인증서 만 제공합니다. 두 가지 문제가 있습니다.

  1. 우리는 원격으로 연결할 때 완전히 확신 할 수 없으며 실제로는이 기계에 연결되어 있으며 하이재킹 된 연결은 아닙니다.
  2. 당사 사이트는 PCI-DSS 3.1 준수 검사에 실패합니다 (인터넷을 통해 연결되는 POS (Point-of-Sale) 직불 / 신용 카드 기계를 사용하기 때문에 필요함). 이 검사는이 인터넷 연결 원격 데스크톱 포트에서 치명적인 오류를보고합니다 : 'SSL 자체 서명 된 인증서'및 '잘못된 호스트 이름을 가진 SSL 인증서'.

원격 데스크톱 확인을위한 적절한 SSL 인증서를 제시하기 위해 서버 / 호스트 역할을하는 Windows 10 Pro (또는 Windows 7 / 8 / 8.1 Pro) 컴퓨터를 얻으려면 어떻게해야합니까?


1
자체 서명 된 인증서 만 신뢰할 수있는 방식으로 자체 서명 된 인증서 만이 시스템에 연결할 각 시스템의 인증서 저장소에 배치 할 수 있습니다. 또한 CA에서 서명 한 인증서를 얻을 수 있으며 기본적으로 CA는 신뢰할 수 있기 때문에 호스트가 사용하려는 인증서는 신뢰할 수 있습니다. CA에서 서명 한 인증서를받지 않으면 PCI-DSS 3.1 준수 문제를 해결할 수 없습니다. 그렇게해야합니다.
Ramhound 2016 년

감사합니다 @Ramhound, 당신은 아주 옳습니다, 나는 CA 서명 인증서가 필요합니다-이제 인증서가 있습니다.
gogoud

답변:


14

이 호스트 시스템을 설정하여 (기존, 구매 한) 외부에서 검증 된 SSL 인증서를 제시 할 수 있습니다 (명령은 Windows 8 및 8.1에서도 작동하거나 Windows 7에서는 작동하거나 작동하지 않을 수 있음) (이 부분은 Microsoft를 기반으로 함) KB 2001849 ) :

먼저 정품 확인 된 SSL 인증서를 구입해야합니다.

pkcs12 형식 파일 (예 : pfx 확장자)로이 인증서가있는 경우 Linux 또는 Cygwin을 사용하여 SHA1 지문을 볼 수 있습니다 (아래에서 필요함).

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. 시작> 실행> mmc
  2. 파일> 스냅인 제거 추가> 인증서> 추가> 컴퓨터 계정> 로컬 컴퓨터> 확인
  3. 왼쪽 창에서 Certificates (Local Computer) Personal을 마우스 오른쪽 버튼으로 클릭하고 All Tasks / Import ...를 선택합니다.
  4. pfx 파일을 찾아서 가져 오십시오. 보안상의 이유로 내보낼 수 없도록하는 것이 좋습니다.
  5. 개인 / 인증서를 확장하면 이제 3 개의 인증서가 표시되며 그 중 하나는 사이트 인증서 (예 : mysite.com)입니다. 이 사이트 인증서를 마우스 오른쪽 단추로 클릭하고 마우스 오른쪽 단추를 클릭 한 후 모든 작업 / 개인 키 관리…를 선택하십시오.
  6. 읽기 권한 만있는 ( '모든 권한'아님) 사용자 'NETWORK SERVICE'를 추가 한 다음 적용
  7. mmc 닫기

regedit를 사용하여 SSLCertificateSHA1Hash에 새 이진 값을 추가하십시오 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp. 필요한 값은 위에서 얻은 인증서의 SHA1 지문입니다. 새 값을 마우스 오른쪽 단추로 클릭하고 수정을 선택한 다음 16 진 코드를 순차적으로 입력하십시오 (콜론이나 공백 또는 쉼표없이 대소 문자를 구분하지 않음). 모두 20 진수 쌍 (40 자)입니다.

호스트 시스템을 재부팅하거나 Services.msc에서 원격 데스크톱 서비스를 다시 시작해야 작동 할 수 있습니다.

이제 올바른 사이트 이름 (예 : mysite.com)을 사용하여이 호스트에 원격 데스크톱 연결을 설정 한 후 상단 연결 표시 줄의 왼쪽에 자물쇠가 잠겨 있습니다.이 버튼을 클릭하면 컴퓨터가 확인되었습니다. 인터넷에서이 호스트로 열린 포트는 이제 PCI-DSS 3.1 호스트 이름 테스트를 통과해야합니다.


5

사용하는 기본 단계는 다음과 같습니다.

호스트에 대해 유효한 인증서를 받으십시오 (외부 CA에서 제공 할 필요는 없지만 모든 시스템이이를 신뢰해야 함). 호스트 이름이 올바른지 확인하십시오. 와일드 카드 인증서에 문제가 있습니다.

다음과 같이 호스트에 인증서를 설치하십시오.

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

UI 또는 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" 

재부팅 불필요


와일드 카드 SSL 인증서는 제대로 작동했지만 여전히 MMC를 열고 네트워크 서비스 권한 추가를 수행해야합니다. 그렇지 않으면 작동하지 않습니다.
FreeSoftwareServers

1

내 인증서가 필요한이 파일이 함께 제공 domain.crt& domain.ca-bundle& 나는 나의이 domain.key요청을 생성하지.

다음은 Linux VM을 사용하여 인증서를 결합하고 지문 및 Windows CMD를 생성하여 호스트를 설정하는 방법입니다. 이를 통해 설정을 완전히 스크립팅 할 수 있습니다.

내 답변과 @gogoud 답변의 가장 큰 차이점은 다음과 같습니다.

  • 레지스트리를 편집하지 않습니다. 나는 그것을 시도했지만 작동하지 않았다 wmic /namespace:.CMD 프롬프트를 통해 사용한다 .
  • Linux VM에서 "지문"줄을 조정하여 지문의 불필요한 부분을 모두 제거하고 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
    

이제 CMD (Elevated CMD Prompt)를 통해 SSLCertificateSHA1Hash를 RDP-Tcp에 추가하십시오.

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.