Verschlüsselte Verbindung zwischen dem ACMP Server und dem SQL Server herstellen

Es ist möglich eine verschlüsselte Verbindung zwischen dem ACMP Server und dem SQL Server herzustellen. Für die Transport Verschlüsselung stehen Ihnen zweierlei Optionen zur Wahl:

  • Nutzen Sie einen Transport Layer Security, um die Daten zu verschlüsseln.
  • Bauen Sie einen IPSec Tunnel auf, in der die Kommunikationsdaten geleitet werden.

Transport Layer Security

Ein SQL Server kann Transport Layer Security (TLS) verwenden, damit die Daten verschlüsselt übertragen werden.

Zertifikat erstellen

Am einfachsten können Sie ein Zertifikat mit dem nachfolgenden PowerShell Skript anlegen. Hierfür benötigen Sie jedoch Administratorrechte:

Powershell Skript zum Erzeugen des Zertifikats
$dnsname = ([System.Net.Dns]::GetHostByName((hostname)).HostName)
#Create SSL Certificate (replace with PKI function)
New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -subject
$Subject  -DnsName $dnsname -FriendlyName SQLServer -NotAfter (Get-Date).AddMonths(24) -KeySpec KeyExchange

Sollten Sie einen anderen Weg gehen und Zertifikate aus MakeCert.exe, OpenSSL oder aus einer anderen CA benutzen, müssen Sie jedoch beachten, dass das Zertifikat bestimmte Eigenschaften aufweist:

  • Sowohl CN des Subject als auch in der SAN Erweiterung muss der FQDN des SQL Servers eingetragen sein.
  • In der Erweiterung Key Usage muss Digital Signature und Key Encipherment aufgelistet sein.
  • In der Erweiterung Enhanced Key Usage muss Server Authentication (1.3.6.1.5.5.7.3.1) aufgelistet sein.

Das Zertifikat muss inklusive des privaten Schlüssels im Windows Certificate Store Personal für Local Machine hinterlegt werden. Zusätzlich dazu muss der Benutzer, unter dem der SQL Server läuft, die Leserechte auf den privaten Schlüssel haben.

SQL Server Dienst Leserechte gewähren

In der Regel läuft der SQL Server Dienst in einem virtuellen Account und nicht als lokaler Service Account. Der virtuelle Account verfügt nur über wenige Rechte.

Account des SQL Server Dienst bestimmen

Um den Account des SQL Server Dienst bestimmen zu können, müssen Sie zunächst den SQL Server Configuration Manager öffnen. Anschließend wählen Sie die SQL Server Services aus und öffnen diese. Öffnen Sie die Eigenschaften der SQL Server Instanz. Unter dem Tab Log On ist der genutzte Account Name hinterlegt.

Hinweis  Hinweis: 

Im Standard ist als Account Name NT Service\MSSQLSERVER oder NT Service\MSSQL$<Instance Name> hinterlegt.

Account des SQL Server Dienst bestimmen.png

Account des SQL Server Dienst bestimmen

Leserechte aktivieren

Sie müssen, wenn Sie eine verschlüsselte Verbindung zwischen dem ACMP Server und dem SQL Server herstellen wollen, die Leserechte für den Account des SQL Server Dienstes aktivieren.
Öffnen Sie dazu zunächst den Cert Manager für den Local Computer (z.B. mmc.exe öffnen und Snap-in hinzufügen) und wählen Sie dann den Ordner Personal > Certificates aus. Suchen Sie das entsprechende Zertifikat aus, für das Sie die Leserechte aktivieren wollen und klicken per Rechtsklick auf dieses. Unter dem geöffneten Menü müssen Sie nun All Tasks > Manage Private Keys… auswählen.

Leserechte gewähren.png

Cert Manager für den Local Computer öffnen

Fügen Sie anschließend den Account des SQL Servers hinzu. In dem nachfolgenden Bild ist es der Account NT Service\MSSQL$SQLEXPRESS. Sobald Sie den Account hinzugefügt haben, müssen Sie diesem die passenden Berechtigungen geben. Aktivieren Sie die Leserechte und bestätigen Sie die Auswahl mit OK.

Leserechte dem Nutzer gewähren.png

Leserechte dem Account hinzufügen

Hinweis  Hinweis: 

Wenn Sie den Account des SQL Servers hinzufügen, sollten Sie darauf achten, dass als Location der lokale Rechner ausgewählt ist. 

Dem SQL Server das Zertifikat zuweisen

Sobald Sie eine Änderung an den Einstellungen vornehmen, werden diese erst nach einem Neustart des SQL Dienstes aktiv.
Innerhalb einer Stack Overflow Antwort wird nicht nur sehr detailliert aufgeführt, woran der Einstellungsdialog fest macht, ob ein Zertifikat ausgewählt werden kann, es wird auch zusätzlich der alternative Weg über die Registry erklärt. Auch wird dort erläutert, dass Wildcard Zertifikate zwar grundsätzlich unterstützt werden, aber teilweise nicht über die Oberfläche auswählbar sind. Wenn Sie dennoch den Weg über die Registry wählen, würde die Zuweisung trotzdem funktionieren.

Manuell

Um ein Zertifikat manuell dem SQL Server zuzuweisen, müssen einige Schritte beachtet werden. Öffnen Sie zunächst den SQL Server Configuration Manager und klappen Sie den Menüpunkt „SQL Server Network Configuration“ aus. Dort ist der Eintrag Protocols for SQLEXPRESS, den Sie per Rechtsklick öffnen müssen, um anschließend zu den Properties zu gelangen.

SQL Server Configuration Manager.png

SQL Server Network Configuration

Im Fenster öffnen sich 3 Tabs, navigieren Sie zum Tab Certificate und wählen Sie das entsprechende Zertifikat aus. In der nachfolgenden Abbildung ist es das Zertifikat SQLServer. Wechseln Sie anschließend in den ersten Tab Flags zurück und wählen Sie dort die Option Force Encryption aus, indem Sie dies auf Yes stellen.

Protocols for SQLEXPRESS Properties.png

Protokoll der SQLEXPRESS Properties

Per Registry

Die Einstellung des Zertifikats kann auch über die Registry (im Rahmen eines Skripts) erfolgen. Legen Sie dazu unter HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL14.%Instance%\MSSQLServer\SuperSocketNetLib (%Instance% durch den Instanznamen ersetzen) einen String mit dem Namen Certificate an. Als Wert muss der Thumbprint (meistens SHA1) des zu nutzenden Zertifikats (in Kleinbuchstaben) eingetragen werden. Legen Sie daneben ein DWord mit dem Namen ForceEncryption an und weisen ihm den Wert 1 zu.

Zertifikat verteilen

Damit die Gegenstelle das angebotene Zertifikat akzeptiert, muss dieses als vertrauenswürdig erkannt werden. Aus diesem Grund muss es in den Windows Certificate Store importiert werden. Beachten Sie, dass dies bei jedem Rechner erfolgen muss, der auf den SQL Server über die gesicherte Verbindung zugreifen soll, auch wenn dies lokal erfolgt.

Test mit SSMS

Sie können über das SQL Server Management Studio testen, ob die gesicherte Verbindung tatsächlich erfolgreich ist. Starten Sie dazu die Anwendung und navigieren Sie bei der Verbindung unter den Optionen zu dem Tab Connection Properties und aktivieren Sie die Checkbox Encrypt connection.
Wenn Sie die Checkbox Trust server certificate aktivieren, wird jedes Zertifikat als valide angesehen. Dies wird für den produktiven Einsatz nicht empfohlen!

Test mit SSMS.PNG

Verbindungstest über das SQL Server Management Studio

Hinweis  Hinweis: 

Das Zertifikat wird nur dann erfolgreich validiert, wenn die Verbindung über den Namen erfolgt, welcher auch im Zertifikat hinterlegt ist – der FQDN. In der nachfolgenden Abbildung ist es der Eintrag zum Servernamen, welcher aus Datenschutzgründen teilweise unkenntlich gemacht wurde.

SSMS Login.PNG

Login zum SQL Server

ACMP Server Connectionstring anpassen

Sie können die Einstellungen für die Verbindung im SQL Server Management Studio auch über den Connectionstring vom ACMP Server einstellen:

Provider=SQLNCLI11.1;Password=MeinGeheimesPW;Persist Security Info=True;User ID=ACMPDBUser;Initial Catalog=ACMP;
Data Source=ServerNamenEingeben.aagon.local\SQLEXPRESS;Use Encryption for Data=True;MARS Connection=False;DataTypeCompatibility=80;Trust Server Certificate=False

Dazu muss die Eigenschaft Use Encryption for Data auf True gesetzt werden.

Hinweis  Hinweis: 

Die Verbindung muss auch hier über den FQDN erfolgen, da ansonsten das Zertifikat nicht als valide gilt.

Sollte die Eigenschaft Trust Server Certificate ebenfalls auf True gesetzt werden, wird jedes Zertifikat als valide angesehen.

Hinweis  Hinweis: 

Lesen Sie hier nach, wie Sie den Connectionstring und die Attribute anpassen können.

IPSec

Möchten Sie alternativ einen IPSec-Tunnel verwenden, um eine verschlüsselte Verbindung zwischen dem ACMP Server und dem SQL Server herzustellen, lesen Sie hier die Vorgehensweise nach.

Nächste empfohlene Handlungen

Tags:

Navigation

© Aagon GmbH 2024
Besuchen Sie unsere neue Aagon-Community