Freigeben über


Vorgehensweise: Verwenden von SSL zum Sichern der Kommunikation mit SQL Server 2000

* * *

Auf dieser Seite

Zielsetzung Zielsetzung
Betrifft Betrifft
Verwendung dieses Moduls Verwendung dieses Moduls
Zusammenfassung Zusammenfassung
Benötigte Kenntnisse Benötigte Kenntnisse
Installieren eines Serverauthentifizierungszertifikats Installieren eines Serverauthentifizierungszertifikats
Sicherstellen, dass das Zertifikat installiert wurde Sicherstellen, dass das Zertifikat installiert wurde
Installieren des Zertifikats der ausstellenden Zertifizierungsstelle auf dem Clientcomputer Installieren des Zertifikats der ausstellenden Zertifizierungsstelle auf dem Clientcomputer
Erzwingen, dass alle Clients SSL verwenden Erzwingen, dass alle Clients SSL verwenden
Ermöglichen der clientseitigen Festlegung, ob SSL verwendet werden soll Ermöglichen der clientseitigen Festlegung, ob SSL verwendet werden soll
Sicherstellen, dass die Kommunikation verschlüsselt wird Sicherstellen, dass die Kommunikation verschlüsselt wird
Weitere Ressourcen Weitere Ressourcen

Zielsetzung

Themenbereiche:

  • Konfigurieren von SQL Server 2000 dahin gehend, dass zur Gewährleistung der sicheren Kommunikation alle Clients SSL verwenden müssen

  • Konfigurieren von SQL Server 2000 dahin gehend, dass zur Gewährleistung der sicheren Kommunikation alle Clients SSL verwenden können

 

Betrifft

Die Informationen in diesem Modul gelten für folgende Produkte und Technologien:

  • Microsoft Windows® XP oder Windows 2000 Server (mit Service Pack 3) und höhere Betriebssysteme

  • Microsoft Zertifikatdienste

  • Microsoft Netzwerkmonitor

  • Microsoft .NET Framework Version 1.0 (mit Service Pack 2) und höhere Versionen

  • Microsoft Visual Studio® 1.0 .NET und höhere Versionen

  • Microsoft Visual C#® .NET

  • SQL Server 2000 (mit Service Pack 2) und höhere Versionen

 

Verwendung dieses Moduls

Empfehlungen für eine erfolgreiche Arbeit mit diesem Modul:

  • Sie benötigen zwei Computer, auf denen das Betriebssystem Windows XP bzw. Windows 2000 Server ausgeführt wird und die wie nachfolgend beschrieben konfiguriert sind.

    • SQL Server 2000 auf dem Datenbankservercomputer (mit installierter Northwind-Beispieldatenbank).

    • Microsoft Data Access Components (MDAC) 2.6 oder höher oder die SQL Server 2000-Clientverbindungsbibliotheken auf dem Clientcomputer.

  • Sie sollten über Erfahrung in der Programmierung mit Visual C# .NET verfügen.

  • Sie müssen über Erfahrung in der Verwendung der Entwicklungsumgebung Visual Studio .NET verfügen.

  • Sie sollten Erfahrung in der Konfiguration von SQL Server 2000 besitzen.

  • Sie müssen über Zugriff auf Microsoft Zertifikatdienste verfügen, um ein SSL-Zertifikat erstellen zu können.

  • Sie müssen Erfahrung in der Verwendung des Netzwerkmonitorprogramms haben.

  • Lesen Sie Modul 4, "Sichere Kommunikation". Hier finden Sie eine Einführung in Secure Sockets Layer (SSL) sowie eine Beschreibung der häufigsten Einsatzgebiete.

  • Lesen Sie Modul 12 dieses Handbuches, "Datenzugriffssicherheit". Hier erhalten Sie einen Überblick über Probleme und Optionen hinsichtlich der Datenbanksicherheit.

 

Zusammenfassung

Secure Sockets Layer (SSL) ist eine Sammlung von Verschlüsselungstechnologien, die Authentifizierung, Vertraulichkeit und Datenintegrität ermöglichen. SSL ist das zwischen Webbrowsern und Webservern am häufigsten eingesetzte Verfahren zur Errichtung eines sicheren Kommunikationskanals. SSL kann jedoch auch zum Sichern der Kommunikationsvorgänge zwischen Clientanwendungen (Direktaufrufern) und Microsoft® SQL Server™ 2000 verwendet werden.

In diesem Modul wird erläutert, wie SQL Server 2000 so konfiguriert wird, dass die sichere Kommunikation mit Clientanwendungen gewährleistet werden kann.

 

Benötigte Kenntnisse

Bevor Sie mit diesem Modul beginnen, sollten Sie sich über folgende Punkte im Klaren sein:

  • SSL stellt eine Alternative zur Verwendung von Internet Protocol Security (IPSec) zur Sicherung des Datenbankverkehrs dar.
    Weitere Informationen zur Sicherung des Datenbankverkehrs mit IPSec finden Sie unter "Vorgehensweise: Verwenden von IPSec zum Sichern der Kommunikation zwischen zwei Servern" in diesem Handbuch.

  • Im Gegensatz zu IPSec sind mit SSL keine Konfigurationsänderungen erforderlich, wenn sich die IP-Adressen von Clients oder Servern ändern.

  • Damit SSL funktioniert, müssen Sie auf dem Datenbankservercomputer ein Serverzertifikat installieren. Der Clientcomputer muss ebenfalls über ein Stammzertifizierungsstellenzertifikat von derselben Zertifizierungsstelle (Certificate Authority oder CA) verfügen.

  • Auf den Clients müssen die SQL Server 2000-Verbindungsbibliotheken installiert sein. Frühere Versionen oder generische Bibliotheken funktionieren nicht.

  • SSL funktioniert nur für TCP/IP (das empfohlene Kommunikationsprotokoll für SQL Server) und Named Pipes.

  • Sie können den Server so konfigurieren, dass die Verwendung der Verschlüsselung für alle Verbindungen erzwungen wird.

  • Auf dem Client bestehen die folgenden Möglichkeiten:

    • Erzwingen der Verwendung der Verschlüsselung für alle ausgehenden Verbindungen.

    • Ermöglichen, dass Clientanwendungen anhand der Verbindungszeichenfolge auswählen, ob die Verschlüsselung für einzelne Verbindungen verwendet werden soll.

 

Installieren eines Serverauthentifizierungszertifikats

SSL setzt voraus, dass der Server über ein Serverauthentifizierungszertifikat verfügt. Dieses Zertifikat muss von einer Certificate Authority (CA oder Zertifizierungsstelle) ausgestellt worden sein, die für die verbindenden Clients als vertrauenswürdig gilt.

  • So installieren Sie ein Serverzertifikat

    1. Melden Sie sich unter Verwendung eines Administratorkontos am Datenbankservercomputer an.

    2. Starten Sie Internet Explorer, und navigieren Sie zu Microsoft Zertifikatdienste. Beispiel:

    http://MyCA/certsrv
    
    1. Klicken Sie auf Zertifikat anfordern und dann auf Weiter.

    2. Klicken Sie auf Erweiterte Anforderung und dann auf Weiter.

    3. Klicken Sie auf Senden Sie ein Zertifikatsanforderungsformular an diese Zertifizierungsstelle und dann auf Weiter.

    4. Füllen Sie das Zertifikatsanforderungsformular aus, und machen Sie hierbei die folgenden Angaben:

      1. Geben Sie im Feld Name den vollqualifizierten Domänennamen des Computers ein, auf dem SQL Server ausgeführt wird. Beispiel:

        sql01.nwtraders.com
        

      2. Klicken Sie im Feld Beabsichtigter Zweck (oder Typ des erforderlichen Zertifikats) auf Serverauthentifizierungszertifikat.

      3. Klicken Sie für den Kryptografiedienstanbieter (Cryptographic Service Provider oder CSP) auf den Microsoft RSA/SChannel-Kryptografiedienstanbieter.

        Hinweis: Sie können auch Microsoft Base Cryptographic Provider, Version 1.0, und die Microsoft Enhanced Cryptographic Providers verwenden. Der Microsoft Strong Cryptographic Provider kann nicht eingesetzt werden.

      4. Aktivieren Sie das Kontrollkästchen Lokalen Speicher verwenden.

        Hinweis: Wählen Sie NICHT Verstärkte Sicherheit für den privaten Schlüssel aktivieren.

    5. Klicken Sie auf Senden, um die Anforderung zu übermitteln.
      Wenn der Zertifikatserver automatisch Zertifikate ausstellt, können Sie das Zertifikat jetzt installieren. Andernfalls können Sie das Zertifikat erst installieren, nachdem es vom Zertifizierungsstellenadministrator ausgestellt wurde. Begeben Sie sich hierzu zu Microsoft Zertifikatdienste, und wählen Sie Auf ausstehendes Zertifikat überprüfen aus.

 

Sicherstellen, dass das Zertifikat installiert wurde

Mit diesem Verfahren wird sichergestellt, dass das Serverzertifikat erfolgreich installiert wurde.

  • So stellen Sie sicher, dass das Zertifikat installiert wurde

    1. Klicken Sie in der Taskleiste auf Start und dann auf Ausführen.

    2. Geben Sie mmc ein, und klicken Sie auf OK.

    3. Klicken Sie im Menü Konsole auf Snap-In hinzufügen/entfernen.

    4. Klicken Sie auf Hinzufügen.

    5. Klicken Sie auf Zertifikate und dann auf Hinzufügen.

    6. Klicken Sie auf Computerkonto und dann auf Weiter.

    7. Vergewissern Sie sich, dass Lokaler Computer (Computer, auf dem diese Konsole ausgeführt wird) aktiviert ist, und klicken Sie dann auf Fertig stellen.

    8. Klicken Sie auf Schließen und dann auf OK.

    9. Erweitern Sie in der Strukturansicht im linken Fensterbereich den Knoten Zertifikate (Lokaler Computer), erweitern Sie Eigene Zertifikate, und wählen Sie dann Zertifikate.

    10. Vergewissern Sie sich, dass es in Verbindung mit dem im vorherigen Verfahren angegebenen vollqualifizierten Domänennamen nur exakt ein Zertifikat gibt.
      Sie können auf das Zertifikat doppelklicken, um Details hierzu anzuzeigen.

 

Installieren des Zertifikats der ausstellenden Zertifizierungsstelle auf dem Clientcomputer

Nachdem das Zertifikat installiert und der SQL Server-Dienst neu gestartet wurde, kann SQL Server SSL mit Clients die Gegebenheiten aushandeln. Clients, die SSL für die Herstellung der Verbindung zu SQL Server verwenden sollen, müssen folgende Voraussetzungen erfüllen:

  • MDAC 2.6 oder die SQL Server 2000-Verbindungsbibliotheken müssen installiert sein.

  • Der Aussteller des SQL Server-Zertifikats muss als vertrauenswürdig gelten.

  • So installieren Sie das Zertifikat der ausstellenden Zertifizierungsstelle auf dem Clientcomputer

    1. Melden Sie sich als Administrator am Clientcomputer an.

    2. Starten Sie Internet Explorer, und navigieren Sie zu Microsoft Zertifikatdienste. Beispiel:

      http://MyCA/certsrv 
      
    1. Klicken Sie auf Zertifizierungsstellenzertifikat oder Zertifikatsperrliste abrufen, und klicken Sie dann auf Weiter.

    2. Klicken Sie auf Zertifizierungsstellen-Zertifikatspfad installieren, und klicken Sie dann im Bestätigungsdialogfeld zum Installieren des Stammzertifikats auf Ja.

 

Erzwingen, dass alle Clients SSL verwenden

Sie können den Server so konfigurieren, dass die Verwendung von SSL für alle Clients obligatorisch ist (wie im vorliegenden Verfahren erläutert). Sie können jedoch auch festlegen, dass die Clients auf Basis einzelner Verbindungen wählen können, ob SSL verwendet werden soll oder nicht (wie im nächsten Verfahren beschrieben). Die Vorteile einer Konfiguration des Servers für die obligatorische Verwendung von SSL seitens der Clients sind die folgenden:

  • Die Sicherheit der gesamten Kommunikation wird garantiert.

  • Alle unsicheren Verbindungen werden zurückgewiesen.

Es gibt jedoch auch Nachteile:

  • Auf allen Clients müssen MDAC 2.6 oder die SQL Server 2000-Verbindungsbibliotheken installiert sein; mit älteren oder generischen Bibliotheken können keine Verbindungen hergestellt werden.

  • Bei Verbindungen, die nicht sicher sein müssen, kommt es aufgrund der zusätzlichen Verschlüsselung zu geringfügigen Leistungseinbußen.

  • So erzwingen Sie die Verwendung von SSL für alle Clients

    1. Klicken Sie auf dem Computer, auf dem SQL Server ausgeführt wird, in der Programmgruppe Microsoft SQL Server auf SQL Server-Netzwerkkonfiguration.

    2. Klicken Sie auf Protokollverschlüsselung erzwingen.

    3. Vergewissern Sie sich, dass TCP/IP und/oder Named Pipes aktiviert ist.

      Von anderen Protokollen wird SSL nicht unterstützt.

    4. Klicken Sie auf OK, um die SQL Server-Netzwerkkonfiguration zu schließen, und klicken Sie dann im Meldungsfenster der SQL Server-Netzwerkkonfiguration nochmals auf OK.

    5. Starten Sie den SQL Server-Dienst neu.

      Bei allen nachfolgenden Clientverbindungen muss nun zwangsläufig SSL verwendet werden, ungeachtet dessen, ob sichere Verbindungen angegeben werden oder nicht.

 

Ermöglichen der clientseitigen Festlegung, ob SSL verwendet werden soll

In diesem Verfahren wird die SSL-Konfiguration erläutert, die es Clients ermöglicht, zu wählen, ob SSL verwendet werden soll. Sie können entweder die Clientbibliotheken so konfigurieren, dass bei allen Verbindungen SSL verwendet werden muss, oder Sie können einzelnen Anwendungen auf Basis von Einzelverbindungen die Auswahl der Verbindungsart ermöglichen. Die Vorteile der Konfiguration des Clients für die Auswahl der Verbindungsart sind die folgenden:

  • Die von SSL verursachte Auslastung tritt nur bei Verbindungen auf, für die SSL wirklich erforderlich ist.

  • Clients, die SSL in Verbindung mit SQL Server nicht unterstützen, können dennoch die Verbindung herstellen.

Bevor Sie sich für diesen Ansatz entscheiden, sollten Sie jedoch prüfen, ob Sie unsichere Verbindungen wirklich zulassen möchten.

  • So nehmen Sie eine Neukonfiguration des Servers vor

    1. Führen Sie auf dem SQL Server-Computer die SQL Server-Netzwerkkonfiguration aus.

    2. Deaktivieren Sie das Kontrollkästchen Protokollverschlüsselung erzwingen.

    3. Starten Sie den SQL Server-Dienst neu.

    4. Kehren Sie zum Clientcomputer zurück.

  • So verwenden Sie SSL für alle Clientverbindungen

Bei diesem Ansatz konfigurieren Sie die Clientbibliotheken so, dass SSL für alle Verbindungen verwendet wird. Dies bedeutet, dass auf Servern mit SQL Server, die die Verschlüsselung nicht unterstützen, und auf Servern mit einer älteren Version als SQL Server 2000 nicht mehr zugegriffen werden kann.

  1. Klicken Sie in der Programmgruppe Microsoft SQL Server auf SQL Server-Clientkonfiguration.

  2. Vergewissern Sie sich, dass TCP/IP und/oder Named Pipes aktiviert ist.

  3. Wählen Sie Protokollverschlüsselung erzwingen.

  • So lassen Sie Anwendungen wählen, ob die Verschlüsselung verwendet werden soll

Bei diesem Ansatz verwenden Anwendungen die Verbindungszeichenfolge, um festzulegen, ob Verschlüsselung verwendet werden soll. Auf diese Weise kann jede Anwendung die Verschlüsselung nur dann verwenden, wenn diese wirklich erforderlich ist.

  1. Wenn Sie den OLE-DB-Datenanbieter für die Herstellung der Verbindung zu SQL Server verwenden, setzen Sie Use Encryption for Data wie im nachstehenden Beispiel einer OLE-DB-Verbindungszeichenfolge gezeigt auf true.

    "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security 
    Info=False;Initial Catalog=Northwind;Data Source=sql01;Use Encryption for 
    Data=True"
    
  2. Wenn Sie den SQL Server .NET-Datenanbieter für die Herstellung der Verbindung zu SQL Server verwenden, setzen Sie Encrypt wie im folgenden Beispiel gezeigt auf true.

    "Server=sql01;Integrated Security=SSPI;Persist Security 
    Info=False;Database=Northwind;Encrypt=True"
    

 

Sicherstellen, dass die Kommunikation verschlüsselt wird

In diesem Verfahren wird mithilfe von Netzwerkmonitor sichergestellt, dass die Datenströme zwischen Anwendungsserver und Datenbankserver verschlüsselt werden. Sie beginnen mit dem Senden von Daten in Klartext und aktivieren dann die Verschlüsselung, indem Sie zunächst den Server und dann den Client konfigurieren.

  • So stellen Sie sicher, dass die Kommunikation verschlüsselt wird

    1. Erstellen Sie auf dem Clientcomputer mit Visual Studio .NET in C# eine neue Konsolenanwendung mit Namen SQLSecureClient.

    2. Kopieren Sie den folgenden Code in Class1.cs, und ersetzen Sie damit allen vorhandenen Code.

      Hinweis: Ersetzen Sie den Servernamen in der Verbindungszeichenfolge durch den Namen Ihres Datenbankservers.

      using System;
        using System.Data;
        using System.Data.SqlClient;
      
        namespace SQLSecureClient
        {
        class Class1
        {
        [STAThread]
        static void Main(string[] args)
        {
        // Ersetzen Sie den Servernamen in der folgenden Verbindungs-
        Zeichenfolge durch den
        // Namen Ihres Datenbankservers
        SqlConnection conn = new SqlConnection(
        "server='sql01';database=NorthWind;Integrated Security='SSPI'");
      
        SqlCommand cmd = new SqlCommand("SELECT * FROM 
        Produkte");      try
        {
        conn.Open();
        cmd.Connection = conn;
        SqlDataReader reader = cmd.ExecuteReader();
        while (reader.Read())
        {
          Console.WriteLine("{0} {1}", 
                      reader.GetInt32(0).ToString(), 
                      reader.GetString(1) );
        }
        reader.Close();
        }
        catch( Exception ex)
        {
        }
        finally
        {
        conn.Close();
        }
        }
        }
        }
        
    3. Klicken Sie im Menü Erstellen auf Projektmappe erstellen.

    4. Damit zwischen den beiden Computern eine Windows-Authentifizierung stattfinden kann, müssen Sie das Konto, mit dem Sie gegenwärtig interaktiv am Clientcomputer angemeldet sind, auf den Datenbankserver kopieren. Stellen Sie sicher, dass Benutzername und Kennwort übereinstimmen. Wahlweise können Sie auch ein Domänenkonto verwenden, das von beiden Computern erkannt wird.
      Darüber hinaus müssen Sie mithilfe von SQL Server Enterprise Manager eine Datenbankanmeldung für das neu erstellte Konto sowie einen Datenbankbenutzer für diese Anmeldung an der Northwind-Datenbank anlegen.

    5. Deaktivieren Sie auf dem Datenbankserver mithilfe der SQL Server-Netzwerkkonfiguration die Verwendung der Verschlüsselung, indem Sie sicherstellen, dass die Option Protokollverschlüsselung erzwingen deaktiviert ist.

    6. Klicken Sie auf dem Datenbankserver in der Programmgruppe Verwaltung auf Netzwerkmonitor.

      Hinweis: Zum Lieferumfang von Windows 2000 Server gehört eine eingeschränkte Version von Netzwerkmonitor. Die Vollversion ist Bestandteil von Microsoft SMS.

      Wenn Netzwerkmonitor noch nicht installiert wurde, wechseln Sie in der Systemsteuerung zu Software, klicken Sie auf Windows-Komponenten hinzufügen/entfernen, wählen Sie Verwaltungs- und Überwachungsprogramme aus der Liste Windows-Komponenten, klicken Sie auf Details, und wählen Sie dann Netzwerkmonitorprogramme. Klicken Sie auf OK und dann auf Weiter, um die eingeschränkte Version von Netzwerkmonitor zu installieren. Sie werden möglicherweise aufgefordert, die Windows 2000 Server-CD einzulegen.

    7. Klicken Sie im Menü Sammeln auf Filter, um einen neuen Filter zu erstellen, der für die Anzeige des zwischen Datenbankservern übertragenen TCP/IP-Netzwerkverkehrs konfiguriert ist.

    8. Klicken Sie auf die Schaltfläche Sammlung starten.

    9. Kehren Sie zum Clientcomputer zurück, und führen Sie die Testkonsolenanwendung aus. Nun sollte eine Liste der Produkte in der Northwind-Datenbank im Konsolenfenster angezeigt werden.

    10. Kehren Sie zum Datenbankserver zurück, und klicken Sie in Netzwerkmonitor auf die Schaltfläche Sammlung beenden und anzeigen.

    11. Doppelklicken Sie auf den ersten erfassten Frame, um die hierin enthaltenen Daten anzuzeigen.

    12. Führen Sie in den erfassten Frames einen Bildlauf nach unten durch. Sie sollten nun die SELECT-Anweisung in Klartext sehen, gefolgt von der Liste der Produkte, die aus der Datenbank abgerufen wurde.

    13. Erzwingen Sie nun die Verwendung der Verschlüsselung für alle Verbindungen, indem Sie den Server mit der SQL Server-Netzwerkkonfiguration konfigurieren.

      1. Aktivieren Sie mithilfe der SQL Server-Netzwerkkonfiguration die Option Protokollverschlüsselung erzwingen.

      2. Beenden Sie den SQL Server-Dienst und starten Sie ihn neu.

    14. Kehren Sie zu Netzwerkmonitor zurück, und klicken Sie auf die Schaltfläche Sammlung starten. Klicken Sie im Dialogfeld Datei speichern auf Nein.

    15. Kehren Sie zum Clientcomputer zurück, und führen Sie die Testkonsolenanwendung erneut aus.

    16. Kehren Sie zum Datenbankservercomputer zurück, und klicken Sie in Netzwerkmonitor auf Sammlung beenden und anzeigen.

    17. Vergewissern Sie sich, dass die Daten nun nicht mehr lesbar sind (da sie verschlüsselt wurden).

    18. Konfigurieren Sie den Server wieder so, dass keine Verschlüsselung mehr erzwungen wird:

      1. Deaktivieren Sie mithilfe der SQL Server-Netzwerkkonfiguration die Option Protokollverschlüsselung erzwingen.

      2. Beenden Sie den SQL Server-Dienst und starten Sie ihn neu.

    19. Starten Sie in Netzwerkmonitor eine neue Sammlung, und führen Sie die Clientanwendung erneut aus. Vergewissern Sie sich, dass die Daten wieder in Klartext vorliegen.

    20. Kehren Sie zum Clientcomputer zurück, und wählen Sie aus der Programmgruppe Microsoft SQL Server die Option SQL Server-Clientkonfiguration.

    21. Aktivieren Sie die Option Protokollverschlüsselung erzwingen, und klicken Sie auf OK, um die SQL Server-Clientkonfiguration zu schließen.

    22. Kehren Sie zu Netzwerkmonitor zurück, und klicken Sie auf die Schaltfläche Sammlung starten. Klicken Sie im Dialogfeld Datei speichern auf Nein.

    23. Kehren Sie zum Clientcomputer zurück, und führen Sie die Testkonsolenanwendung erneut aus.

    24. Kehren Sie zum Datenbankserver zurück, und klicken Sie in Netzwerkmonitor auf Sammlung beenden und anzeigen.

    25. Vergewissern Sie sich, dass die Daten nun nicht mehr lesbar sind (da sie verschlüsselt wurden).
      Beachten Sie, dass SQL Server in allen Fällen zu Beginn der Kommunikationssequenz sein Serverauthentifizierungszertifikat in Klartext an den Client sendet. Dies ist Teil des SSL-Protokolls. Beachten Sie, dass dies auch dann geschieht, wenn weder der Server noch der Client Verschlüsselung verlangen.

 

Weitere Ressourcen

Informationen zur Installation von Netzwerkmonitor unter Windows 2000 finden Sie in den folgenden Artikeln der Microsoft Knowledge Base:

Weitere englischsprachige Informationen über Netzwerkmonitor finden Sie im entsprechenden Abschnitt des Microsoft Platform SDK in MSDN unter: https://msdn.microsoft.com/library/default.asp?url=/library/en-us/netmon/netmon/network_monitor.asp.