So stellen Sie ein verifiziertes Serverzertifikat für Remotedesktopverbindungen (RDP) zu Windows 10 bereit

Wir haben einen Windows 10 Pro-Computer in unserem Büro, der über einen offenen Port zum Internet für eingehende Remotedesktopverbindungen verfügt (ein "Host"). Es ist gut geschützt durch ein komplexes Passwort und eine begrenzte Anzahl zulässiger Versuche und nur TLS 1.1 oder höher, enthält jedoch kein extern verifiziertes SSL-Zertifikat, sondern nur das selbst generierte selbstsignierte, das Remote Desktop Services bietet, und dies gibt uns zwei Probleme:

  1. Wir können nicht ganz sicher sein, wann remote verbinden Wir verbinden uns wirklich mit diesem Computer und nicht mit einer entführten Verbindung.
  2. Unsere Website schlägt die PCI-DSS 3.1-Konformitätsprüfung fehl (erforderlich, da wir dort einen Debit-/Kreditkartenautomaten verwenden, der eine Verbindung über das Internet herstellt). Die Überprüfung meldet schwerwiegende Fehler an diesem internetseitigen Remotedesktopport: "SSL-selbstsigniertes Zertifikat" und "SSL-Zertifikat mit falschem Hostnamen".

Wie bekomme ich die Windows 10 Pro oder Windows 7 / 8 / 8.1 Pro) Maschine als server / Host, um ein korrektes SSL-Zertifikat für die Remotedesktopüberprüfung vorzulegen?

Author: gogoud, 2016-06-24

3 answers

Sie können diesen Hostcomputer so einstellen, dass er Ihr (vorhandenes, erworbenes) extern verifiziertes SSL-Zertifikat verwendet und präsentiert (Anweisungen funktionieren wahrscheinlich auch für Windows 8 und 8.1, funktionieren möglicherweise nicht für Windows 7) (Teile davon basierend auf a Microsoft KB 2001849):

Zuerst müssen Sie ein echt verifiziertes SSL-Zertifikat erworben haben.

Wenn Sie dieses Zertifikat in der pkcs12-Formatdatei (z. B. pfx-Erweiterung) haben, können Sie den SHA1-Fingerabdruck unter Linux oder Cygwin so anzeigen (Sie wird es unten brauchen):

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

Alternativ, wenn Sie die einzelnen Zertifikatdateien auf Ihrem Linux-Server unter /etc/ssl (/etc/ssl/certs/mysite.crt /etc/ssl/mysite.ca-bundle und /etc/ssl/private/mysite.key) Sie können PFX-Datei erstellen und SHA1 Fingerabdruck erhalten so:

  1. Erstellen Sie eine pfx-Datei für Ihr Zertifikat, falls Sie noch keine haben (hier: mysite.pfx) - Legen Sie bei Bedarf ein gutes Passwort fest:

    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. Verschieben oder kopieren Sie diese PFX-Datei nach Bedarf. dass es von Ihrem Windows-Host-Computer aus zugänglich ist.

  3. Ansicht SHA1 Fingerabdruck des Schlüssels (Sie benötigen diese unten):

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

Importieren Sie die pkcs12-Formatdatei (z. B. pfx) in den persönlichen Zertifikatspeicher des Windows-Hostcomputers:

  1. Start - > Ausführen - > mmc -
  2. Datei > Snap-In hinzufügen entfernen > Certficates > Hinzufügen > Computerkonto > Lokaler Computer > OK
  3. Klicken Sie im linken Fenster mit der rechten Maustaste auf Zertifikate (Lokaler Computer)Personal, wählen Sie Alle Aufgaben/Importieren...
  4. Suchen Sie die PFX-Datei und importieren Sie sie, ich schlage vor, dass Sie sie aus Sicherheitsgründen nicht exportierbar machen.
  5. Wenn Sie Ihre persönlichen/Zertifikate erweitern, sollten Sie jetzt 3 Zertifikate sehen, von denen eines Ihr Site-Zertifikat ist (z. mysite.com). Klicken Sie mit der rechten Maustaste auf dieses Site-Zertifikat und wählen Sie mit der rechten Maustaste Alle Aufgaben / Private Schlüssel verwalten ...
  6. Benutzer 'NETZWERKDIENST' nur mit Leseberechtigung hinzufügen (nicht die volle Kontrolle), dann anwenden
  7. Schließen mmc -

Verwenden Sie regedit, um bei HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp einen neuen Binärwert namens sslcertificateha1hash hinzuzufügen. Der Wert, den es benötigt, ist der SHA1-Fingerabdruck des oben erhaltenen Zertifikats: Klicken Sie mit der rechten Maustaste auf den neuen Wert, wählen Sie Ändern und geben Sie dann die Hex-Codes nacheinander ein (ohne Doppelpunkte oder Leerzeichen oder Kommas sind Buchstaben nicht groß-und Kleinschreibung) – es gibt insgesamt 20 Hex-Paare (40 Zeichen).

Möglicherweise müssen Sie den Hostcomputer neu starten oder Remotedesktopdienste neu starten (von Diensten.msc) vor es wird funktionieren.

Nun, nachdem Sie eine Remotedesktopverbindung zu diesem Host unter Verwendung des richtigen Site-Namens hergestellt haben (z. mysite.com) Sie sollten ein gesperrtes Vorhängeschloss auf der linken Seite der oberen Verbindungsleiste sehen: Wenn Sie darauf klicken, wird angezeigt, dass die Identität des Remotecomputers überprüft wurde. Ein Port, der vom Internet bis zu diesem Host geöffnet ist, sollte nun PCI-DSS 3.1-Hostnamentests bestehen.

 19
Author: gogoud,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-08-15 11:41:46

Hier sind die grundlegenden Schritte, die ich verwende:

Erhalten Sie ein gültiges Zertifikat für den Host (es muss nicht von einer externen Zertifizierungsstelle stammen, aber alle Ihre Computer müssen ihm vertrauen). Stellen Sie sicher, dass es den richtigen Hostnamen hat, ich hatte Probleme mit Platzhalterzertifikaten.

Installieren Sie das Zertifikat auf dem Host wie folgt:

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

Suchen Sie den Fingerabdruck für das Zertifikat entweder in der Benutzeroberfläche oder in PowerShell:

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

Weisen Sie nun Remote Desktop an, dieses Zertifikat zu verwenden:

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

Kein Neustart erforderlich

 11
Author: Peter Hahndorf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-06-24 19:48:44

Mein Zertifikat wird mit 2 benötigten Dateien geliefert, domain.crt & domain.ca-bundle & dann habe ich mein domain.key von der Generierung der Anfrage.

So richte ich es mit einer Linux-VM ein, um die Zertifikate zu kombinieren und den Fingerabdruck und die Windows-CMD zum Einrichten des Hosts zu generieren. Dies ermöglicht das vollständige Scripting des Setups.

Die größten Unterschiede zwischen meiner und @gogoud Antwort sind:

  • Ich bearbeite die Registrierung nicht. Ich habe das versucht und es hat nicht funktioniert, ich benutze wmic /namespace: über die CMD-Eingabeaufforderung.
  • Ich habe die Zeile "Fingerabdruck" auf der Linux-VM, um alle unnötigen Teile des Fingerabdrucks zu entfernen und in das von Windows gewünschte Format zu bringen. (DH: Keine doppelpunkte, keine worte, nur die Fingerprint w / kleinbuchstaben).
  • Ich habe auch Skript geschrieben und NETWORK SERVICE Berechtigungen hinzugefügt.

Erstellen Sie ein Verzeichnis zum Arbeiten und verschieben Sie die 3 Dateien hinein:

domain.ca-bundle  domain.crt  domain.key 

PFX-Formatschlüssel erstellen:

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

Export sslcertificateha1hash / FingerPrint zu TXT Datei:

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

Zertifikat in Windows importieren (erhöhte CMD-Eingabeaufforderung öffnen):

  • Dies kann über den Schalter "- p MyPassword "

    certutil.exe -importpfx C:\domain.pfx
    

Fügen Sie nun SSLCertificateSHA1Hash über CMD (erhöhte CMD-Eingabeaufforderung) zu RDP-Tcp hinzu):

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

Sie müssen jetzt den Benutzer "Netzwerkdienst" mit den Berechtigungen "Nur lesen" hinzufügen:

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

Host neu starten:

 shutdown /r /t 5
 1
Author: FreeSoftwareServers,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-08-22 11:23:33