Cách cung cấp chứng chỉ máy chủ được xác minh cho các kết nối Remote Desktop (RDP) cho Windows 10


15

Chúng tôi có một máy Windows 10 Pro tại văn phòng của chúng tôi có cổng mở internet để kết nối máy tính để bàn từ xa ('máy chủ'). Nó được bảo vệ tốt bởi mật khẩu phức tạp và số lần thử hạn chế cho phép và chỉ TLS 1.1 trở lên, nhưng nó không xuất trình chứng chỉ SSL được xác minh bên ngoài, chỉ có chứng chỉ tự tạo tự tạo mà Remote Desktop Services cung cấp, và điều này cho chúng ta hai vấn đề:

  1. Chúng tôi không thể hoàn toàn tự tin khi kết nối từ xa, chúng tôi thực sự đang kết nối với máy này và không phải là một số kết nối bị tấn công.
  2. Trang web của chúng tôi không kiểm tra tuân thủ PCI-DSS 3.1 (bắt buộc vì chúng tôi sử dụng máy ghi nợ / thẻ tín dụng điểm bán hàng kết nối qua internet). Kiểm tra báo cáo các lỗi nghiêm trọng trên cổng máy tính từ xa phải đối mặt với internet này: 'Chứng chỉ tự ký SSL' và 'Chứng chỉ SSL có tên máy chủ sai'.

Làm cách nào để máy Windows 10 Pro (hoặc Windows 7/8 / 8.1 Pro) hoạt động như máy chủ / máy chủ để xuất trình chứng chỉ SSL phù hợp để xác minh Máy tính từ xa?


1
Bạn có thể đặt chứng chỉ tự ký vào kho lưu trữ chứng chỉ, của mỗi máy sẽ kết nối với máy này, theo cách đó chỉ có chứng chỉ tự ký mới được tin cậy. Bạn cũng có thể nhận được chứng chỉ được ký bởi CA và theo mặc định, vì CA được tin cậy, chứng chỉ mà máy chủ muốn sử dụng sẽ được tin cậy. Bạn sẽ không thể giải quyết các vấn đề tuân thủ PCI-DSS 3.1 của mình trừ khi bạn nhận được chứng chỉ được ký bởi CA. Bạn nên làm điều đó.
Ramhound

Cảm ơn @Ramhound, bạn hoàn toàn đúng, tôi cần chứng chỉ có chữ ký CA - bây giờ tôi có một chứng chỉ.
gogoud

Câu trả lời:


16

Bạn có thể đặt máy chủ này sử dụng và xuất trình chứng chỉ SSL được xác minh bên ngoài (đã mua, đã mua) của mình, do đó (hướng dẫn có thể cũng hoạt động cho Windows 8 & 8.1, có thể hoặc không hoạt động cho Windows 7) (các phần của điều này dựa trên Microsoft KB 2001849 ):

Trước tiên, bạn cần phải mua chứng chỉ ssl đã được xác minh chính hãng.

Nếu bạn có chứng chỉ này trong tệp định dạng pkcs12 (ví dụ: phần mở rộng pfx), bạn có thể xem dấu vân tay SHA1 bằng Linux hoặc Cygwin do đó (bạn sẽ cần nó bên dưới):

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

Ngoài ra, nếu bạn có các tệp chứng chỉ riêng trong máy chủ Linux của bạn tại / etc / ssl (/etc/ssl/certs/mysite.crt, /etc/ssl/mysite.ca-bundle và /etc/ssl/private/mysite.key ) bạn có thể tạo tệp pfx và lấy dấu vân tay SHA1, do đó:

  1. Tạo tệp pfx cho chứng chỉ của bạn, nếu bạn chưa có (tại đây: mysite.pfx) - đặt mật khẩu tốt khi được yêu cầu:

    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. Di chuyển hoặc sao chép tệp pfx này theo yêu cầu để máy chủ Windows của bạn có thể truy cập được.

  3. Xem dấu vân tay SHA1 của khóa (bạn sẽ cần điều này bên dưới):

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

Nhập tệp định dạng pkcs12 (ví dụ: pfx) vào kho chứng chỉ cá nhân của máy chủ Windows:

  1. Bắt đầu> Chạy> mmc
  2. Tệp> Thêm Xóa Snap-in> Chứng nhận> Thêm> Tài khoản máy tính> Máy tính cục bộ> OK
  3. Trong cửa sổ bên trái, nhấp chuột phải vào Chứng chỉ (Máy tính cục bộ) Cá nhân, chọn Tất cả tác vụ / Nhập khẩu
  4. Xác định vị trí tệp pfx và nhập nó, tôi đề nghị rằng vì lý do bảo mật, bạn không thể xuất nó.
  5. Mở rộng Chứng chỉ cá nhân / Chứng chỉ của bạn, bây giờ bạn sẽ thấy 3 chứng chỉ, một trong số đó là chứng chỉ trang web của bạn (ví dụ: mysite.com). Nhấp chuột phải vào chứng chỉ trang web này và nhấp chuột phải, chọn Tất cả tác vụ / Quản lý khóa riêng
  6. Thêm người dùng 'DỊCH VỤ MẠNG' chỉ với quyền Đọc (không phải Kiểm soát hoàn toàn), sau đó Áp dụng
  7. Đóng mmc

Sử dụng regedit để thêm Giá trị nhị phân mới gọi là SSLCertertSHA1Hash tại HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp. Giá trị nó cần là dấu vân tay SHA1 của chứng chỉ thu được ở trên: nhấp chuột phải vào giá trị mới, chọn Sửa đổi và sau đó nhập mã hex liên tục (không có dấu hai chấm hoặc dấu cách hoặc dấu phẩy, chữ cái không phân biệt chữ hoa chữ thường) - có 20 cặp hex trong tất cả (40 ký tự).

Bạn có thể cần khởi động lại máy chủ hoặc khởi động lại Remote Desktop Services (từ Services.msc) trước khi nó hoạt động.

Bây giờ, sau khi thực hiện kết nối máy tính từ xa với máy chủ này bằng tên trang web chính xác (ví dụ: mysite.com), bạn sẽ thấy một ổ khóa bị khóa ở phía bên trái của thanh kết nối trên cùng: nhấp vào đây cho thấy danh tính của điều khiển từ xa máy tính đã được xác minh. Một cổng được mở từ internet thông qua máy chủ này sẽ vượt qua kiểm tra tên máy chủ PCI-DSS 3.1.


Tôi muốn nâng cao bạn vài ngàn lần. Nó hoạt động 100%
Shockwaver

9

Dưới đây là các bước cơ bản tôi sử dụng:

Nhận một chứng chỉ hợp lệ cho máy chủ lưu trữ, (nó không phải đến từ một CA bên ngoài, nhưng tất cả các máy của bạn phải tin tưởng nó). Hãy chắc chắn rằng nó có tên máy chủ chính xác, tôi đã gặp vấn đề với certs ký tự đại diện.

Cài đặt chứng chỉ trên máy chủ, như:

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

tìm dấu vân tay cho chứng chỉ, trong UI hoặc trong PowerShell:

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

Bây giờ hãy nói với Remote Desktop để sử dụng chứng chỉ đó:

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

không cần khởi động lại


Chứng chỉ SSL ký tự đại diện của tôi hoạt động tốt, nhưng tôi vẫn phải mở MMC và Thêm giấy phép dịch vụ mạng nếu không nó sẽ không hoạt động.
FreeSoftwareServers

Tôi đã có thể nhập các ký tự đại diện trên "Windows 10" cũng như "Windows Server 2016" với một lưu ý rằng Windows Server không có certutil.exe. Đó không phải là vấn đề lớn vì bạn có thể nhập thủ công mycert.pfx vào cửa hàng cert. Tôi không phải mở MMC và không Thêm quyền dịch vụ mạng.
TMT

1

Cert của tôi đi kèm với 2 file cần thiết, domain.crt& domain.ca-bundle& sau đó tôi có tôi domain.keytừ tạo ra các yêu cầu.

Đây là cách tôi thiết lập nó bằng máy ảo Linux để kết hợp các certs và tạo dấu vân tay và cửa sổ CMD để thiết lập máy chủ. Điều này cho phép kịch bản đầy đủ của thiết lập.

Sự khác biệt lớn nhất giữa câu trả lời của tôi và @gogoud là:

  • Tôi không chỉnh sửa sổ đăng ký. Tôi đã thử điều đó và nó không hoạt động, tôi sử dụng wmic /namespace:thông qua dấu nhắc CMD.
  • Tôi đã điều chỉnh dòng "Vân tay" trên máy ảo Linux để loại bỏ tất cả các phần không cần thiết của dấu vân tay và đặt nó theo định dạng mà Windows muốn. (IE: Không có dấu hai chấm, không có từ, chỉ có Dấu vân tay w / chữ thường).
  • Tôi cũng viết kịch bản thêm NETWORK SERVICEquyền.

Tạo một thư mục để làm việc và di chuyển 3 tệp vào đó:

domain.ca-bundle  domain.crt  domain.key 

Tạo khóa định dạng pfx:

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

Xuất SSLCertertSHA1Hash / FingerPrint sang tệp TXT:

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

Nhập chứng chỉ vào Windows (Mở nhắc nhở độ cao):

  • Điều này có thể được thêm vào kịch bản thông qua công tắc "-p MyPassword"

    certutil.exe -importpfx C:\domain.pfx
    

Bây giờ hãy thêm SSLCertertSHA1Hash vào RDP-Tcp thông qua CMD (Dấu nhắc nâng cao):

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

Bạn sẽ cần thêm quyền của người dùng "Dịch vụ mạng" với quyền "Chỉ đọc" ngay bây giờ:

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

Khởi động lại máy chủ:

 shutdown /r /t 5

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.