Zuletzt geändert von Steffi F am 2025/05/16 06:57

Zeige letzte Bearbeiter
1 {{aagon.floatingbox/}}
2
3 = **Verschlüsselte Verbindung zwischen dem ACMP Server und dem SQL Server herstellen** =
4
5 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:
6
7 * Nutzen Sie einen Transport Layer Security, um die Daten zu verschlüsseln.
8 * Bauen Sie einen IPSec Tunnel auf, in der die Kommunikationsdaten geleitet werden.
9
10 == Transport Layer Security ==
11
12 Ein SQL Server kann Transport Layer Security (TLS) verwenden, damit die Daten verschlüsselt übertragen werden.
13
14 === **Zertifikat erstellen** ===
15
16 Am einfachsten können Sie ein Zertifikat mit dem nachfolgenden PowerShell Skript anlegen. Hierfür benötigen Sie jedoch Administratorrechte:
17
18 **Powershell Skript zum Erzeugen des Zertifikats**
19 {{code language="CSV"}}$dnsname = ([System.Net.Dns]::GetHostByName((hostname)).HostName)
20 #Create SSL Certificate (replace with PKI function)
21 New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -subject
22 $Subject  -DnsName $dnsname -FriendlyName SQLServer -NotAfter (Get-Date).AddMonths(24) -KeySpec KeyExchange{{/code}}
23
24 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>>https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/enable-encrypted-connections-to-the-database-engine?view=sql-server-2017]] aufweist:
25
26 * Sowohl //CN// des Subject als auch in der //SAN// Erweiterung muss der FQDN des SQL Servers eingetragen sein.
27 * In der Erweiterung //Key Usage// muss //Digital Signature// und //Key Encipherment// aufgelistet sein.
28 * In der Erweiterung //Enhanced Key Usage// muss //Server Authentication// (1.3.6.1.5.5.7.3.1) aufgelistet sein.
29
30 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.
31
32 **SQL Server Dienst Leserechte gewähren**
33
34 In der Regel läuft der SQL Server Dienst in einem [[virtuellen Account>>https://www.sqlservercentral.com/blogs/sql-server-2012-and-virtual-service-accounts]] und nicht als lokaler Service Account. Der virtuelle Account verfügt nur über wenige Rechte.
35
36 **Account des SQL Server Dienst bestimmen**
37
38 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.
39
40 {{aagon.infobox}}
41 Im Standard ist als Account Name// NT Service\MSSQLSERVER// oder //NT Service\MSSQL$<Instance Name>// hinterlegt.
42 {{/aagon.infobox}}
43
44 {{figure}}
45 [[image:Account des SQL Server Dienst bestimmen.png||data-xwiki-image-style-alignment="center" height="624" width="826"]]
46
47 {{figureCaption}}
48 Account des SQL Server Dienst bestimmen
49 {{/figureCaption}}
50 {{/figure}}
51
52 **Leserechte aktivieren**
53 \\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.
54 Ö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.
55
56 {{figure}}
57 [[image:Leserechte gewähren.png||data-xwiki-image-style-alignment="center"]]
58
59 {{figureCaption}}
60 Cert Manager für den Local Computer öffnen
61 {{/figureCaption}}
62 {{/figure}}
63
64 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//.
65
66 {{figure}}
67 [[image:Leserechte dem Nutzer gewähren.png||data-xwiki-image-style-alignment="center"]]
68
69 {{figureCaption}}
70 Leserechte dem Account hinzufügen
71 {{/figureCaption}}
72 {{/figure}}
73
74 {{aagon.infobox}}
75 Wenn Sie den Account des SQL Servers hinzufügen, sollten Sie darauf achten, dass als Location der lokale Rechner ausgewählt ist.
76 {{/aagon.infobox}}
77
78 === **Dem SQL Server das Zertifikat zuweisen** ===
79
80 Sobald Sie eine Änderung an den Einstellungen vornehmen, werden diese erst nach einem Neustart des SQL Dienstes aktiv.
81 Innerhalb einer [[Stack Overflow Antwort>>https://stackoverflow.com/questions/36817627/ssl-certificate-missing-from-dropdown-in-sql-server-configuration-manager/36823345#36823345]] 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.
82
83 **Manuell**
84 \\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.
85
86 {{figure}}
87 [[image:SQL Server Configuration Manager.png||data-xwiki-image-style-alignment="center"]]
88
89 {{figureCaption}}
90 SQL Server Network Configuration
91 {{/figureCaption}}
92 {{/figure}}
93
94 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.
95
96 {{figure}}
97 [[image:Protocols for SQLEXPRESS Properties.png||data-xwiki-image-style-alignment="center"]]
98
99 {{figureCaption}}
100 Protokoll der SQLEXPRESS Properties
101 {{/figureCaption}}
102 {{/figure}}
103
104 **Per Registry**
105
106 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.
107
108 === **Zertifikat verteilen** ===
109
110 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.
111
112 === **Test mit SSMS** ===
113
114 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//.
115 Wenn Sie die Checkbox Trust// server certificate// aktivieren, wird jedes Zertifikat als valide angesehen. Dies wird für den produktiven Einsatz nicht empfohlen!
116
117 {{figure}}
118 [[image:Test mit SSMS.PNG||data-xwiki-image-style-alignment="center"]]
119
120 {{figureCaption}}
121 Verbindungstest über das SQL Server Management Studio
122 {{/figureCaption}}
123 {{/figure}}
124
125 {{aagon.infobox}}
126 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.
127 {{/aagon.infobox}}
128
129 {{figure}}
130 [[image:SSMS Login.PNG||data-xwiki-image-style-alignment="center"]]
131
132 {{figureCaption}}
133 Login zum SQL Server
134 {{/figureCaption}}
135 {{/figure}}
136
137 == ACMP Server Connectionstring anpassen ==
138
139 Sie können die Einstellungen für die Verbindung im SQL Server Management Studio auch über den Connectionstring vom ACMP Server einstellen:
140 \\{{code language="CSV"}}Provider=SQLNCLI11.1;Password=MeinGeheimesPW;Persist Security Info=True;User ID=ACMPDBUser;Initial Catalog=ACMP;
141 Data Source=ServerNamenEingeben.aagon.local\SQLEXPRESS;Use Encryption for Data=True;MARS Connection=False;DataTypeCompatibility=80;Trust Server Certificate=False{{/code}}
142
143 Dazu muss die Eigenschaft **//Use Encryption for Data// **auf //**True**// gesetzt werden.
144
145 {{aagon.infobox}}
146 Die Verbindung muss auch hier über den FQDN erfolgen, da ansonsten das Zertifikat nicht als valide gilt.
147 {{/aagon.infobox}}
148
149 Sollte die Eigenschaft //Trust Server Certificate// ebenfalls auf True gesetzt werden, wird jedes Zertifikat als valide angesehen.
150
151 {{aagon.infobox}}
152 Lesen Sie [[hier >>doc:.Connectionstring anpassen.WebHome]]nach, wie Sie den Connectionstring und die Attribute anpassen können.
153 {{/aagon.infobox}}
154
155 == IPSec ==
156
157 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>>https://sqlstarters.com/2014/01/23/ipsec-settings-for-the-sql-server/]] nach.
158
159 === Nächste empfohlene Handlungen ===
160
161 * [[Connectionstring anpassen>>doc:.Connectionstring anpassen.WebHome]]
© Aagon GmbH 2025
Besuchen Sie unsere Aagon-Community