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

Navigation

© Aagon GmbH 2024
Besuchen Sie unsere neue Aagon-Community