Procédure : Utiliser SSL pour sécuriser les communications avec SQL Server 2000

Dernière mise à jour le 31 août 2004

Sur cette page

Objectifs
S'applique à
Comment utiliser ce module
Résumé
Points à connaître
Installer un certificat d'authentification du serveur
Vérifier l'installation du certificat
Installer le certificat de l'Autorité de certification émettrice sur le client
Obliger tous les clients à utiliser SSL
Permettre aux clients de déterminer si SSL doit être utilisé
Vérifier le cryptage des communications
Ressources supplémentaires

Objectifs

Ce module vous permet d'effectuer les opérations suivantes :

  • configurer SQL Server 2000 pour imposer à tous les clients l'utilisation du protocole SSL dans le but de sécuriser les communications ;

  • configurer SQL Server 2000 afin d'offrir aux clients la possibilité d'utiliser le protocole dans le but de sécuriser les communications.

Haut de page

S'applique à

Ce module s'applique aux produits et technologies suivants :

  • Microsoft Windows® XP ou Windows 2000 Server (avec le Service Pack 3) et systèmes d'exploitation ultérieurs

  • Services de certificat Microsoft

  • Moniteur réseau Microsoft

  • Microsoft .NET Framework version 1.0 (avec le Service Pack 2) et versions ultérieures

  • Microsoft Visual Studio® 1.0 .NET et versions ultérieures

  • Microsoft Visual C#® .NET

  • SQL Server 2000 (avec le Service Pack 2) et versions ultérieures

Haut de page

Comment utiliser ce module

Pour tirer le meilleur parti possible de ce module :

  • Vous devez posséder deux ordinateurs équipés du système d'exploitation Windows XP ou Windows 2000 Server et configurés de la façon suivante :

    • L'exemple de base de données Northwind doit être installé sur l'ordinateur serveur de base de données SQL Server 2000.

    • Microsoft Data Access Components (MDAC) 2.6 ou ultérieur, ou les bibliothèques de connectivité client SQL Server 2000 sur l'ordinateur client.

  • Vous devez être familiarisé avec la programmation en Visual C# .NET.

  • Vous devez être familiarisé avec l'environnement de développement Visual Studio .NET.

  • Vous devez posséder une expérience de la configuration SQL Server 2000.

  • Vous devez avoir accès aux services de certificat Microsoft pour générer un certificat SSL.

  • Vous devez être familiarisé avec l'outil Moniteur réseau Microsoft.

  • Lisez le Module 4 « Communications sécurisées ». Ce module présente les principaux concepts du protocole SSL et décrit les situations dans lesquelles celui-ci est généralement utilisé.

  • Lisez le Module 12 de ce guide, « Sécurité de l'accès aux données ». Ce module offre une présentation des options et des questions liées à la sécurité.

Haut de page

Résumé

Le protocole SSL (Secure Sockets Layer) est un ensemble de technologies de cryptage qui assure l'authentification, la confidentialité et l'intégrité des données. Ce protocole est plus communément utilisé entre les navigateurs Web et les serveurs Web pour créer un canal de communication sécurisé. Cependant, SSL permet également de sécuriser les communications entre les applications clientes (appelants directs) et Microsoft® SQL Server™ 2000.

Ce module décrit comment configurer SQL Server 2000 pour utiliser le protocole SSL dans le but de sécuriser les communications avec les applications clientes.

Haut de page

Points à connaître

Avant d'utiliser ce module, vous devez tenir compte des points suivants :

  • Le protocole SSL est une alternative à l'utilisation du protocole IPSec (Internet Protocol Security) pour sécuriser le trafic de base de données. Pour plus d'informations sur l'utilisation de IPSec pour sécuriser le trafic de base de données, consultez la section « Procédure : Utiliser IPSec pour fournir une communication sécurisée entre deux serveurs » dans ce guide.

  • Contrairement à IPSec, il n'est pas nécessaire de modifier la configuration si les adresses IP du serveur ou du client changent.

  • Pour que SSL fonctionne, vous devez installer un certificat de serveur sur l'ordinateur du serveur de base de données. L'ordinateur client doit également disposer d'un certificat d'Autorité de certification racine émis par la même autorité.

  • Les bibliothèques de connectivité SQL Server 2000 doivent être installées sur les clients. Les versions antérieures ou les bibliothèques génériques ne fonctionneront pas.

  • SSL fonctionne uniquement pour TCP/IP (protocole de communication recommandé pour SQL Server) et les canaux nommés.

  • Vous pouvez configurer le serveur afin d'imposer l'utilisation du cryptage pour toutes les connexions.

  • Sur le client, vous pouvez :

    • imposer l'utilisation du cryptage pour toutes les connexions sortantes ;

    • autoriser les applications clientes à opter, ou non, pour l'utilisation du cryptage, séparément pour chaque connexion, en utilisant la chaîne de connexion.

Haut de page

Installer un certificat d'authentification du serveur

Dans le cadre du protocole SSL, le serveur doit posséder un certificat d'authentification émis par une Autorité de certification approuvée par les clients qui se connectent.

  • Pour installer un certificat de serveur

    1. Connectez-vous à l'ordinateur serveur de base de données à l'aide d'un compte d'administrateur.

    2. Démarrez Internet Explorer pour accéder aux services de certificat Microsoft, par exemple :

      http://MyCA/certsrv
      
    3. Cliquez sur Demander un certificat, puis sur Suivant.

    4. Cliquez sur Demande avancée, puis sur Suivant.

    5. Cliquez sur Soumettre une demande de certificat auprès de cette Autorité de certification en utilisant un formulaire, puis sur Suivant.

    6. Remplissez le formulaire de demande de certificat avec les informations suivantes :

      1. Entrez dans le champ Nom le nom de domaine complet de l'ordinateur exécutant SQL Server. Par exemple :

        sql01.nwtraders.com
        
      2. Dans le champ Rôle prévu (ou Type de certificat nécessaire), cliquez sur Certificat d'authentification serveur.

      3. Pour le fournisseur de services cryptographiques, cliquez sur Fournisseur de services cryptographiques Microsoft RSA Schannel.

        Remarque : Microsoft Base Cryptographic Provider version 1.0 et Microsoft Enhanced Cryptographic Providers fonctionnent également. Microsoft Strong Cryptographic Provider ne fonctionne pas.

      4. Activez la case à cocher Utiliser le magasin de l'ordinateur local.

        Remarque : ne sélectionnez PAS Activer la protection renforcée par clé privée.

    7. Cliquez sur Envoyer pour transmettre la demande. Si le serveur de certificats délivre automatiquement les certificats, vous pouvez installer le certificat dès à présent. Sinon, vous pouvez installer le certificat après son émission par l'administrateur de l'Autorité de certification en accédant aux services de certificat Microsoft puis en sélectionnant Vérifier un certificat en attente.

Haut de page

Vérifier l'installation du certificat

Cette procédure permet de vérifier que le certificat a été installé correctement.

  • Pour vérifier que le certificat a été installé

    1. Dans la barre des tâches, cliquez sur le bouton Démarrer, puis sur Exécuter.

    2. Tapez mmc et cliquez sur OK.

    3. Dans le menu Console, choisissez Ajouter/Supprimer un composant logiciel enfichable.

    4. Cliquez sur Ajouter.

    5. Cliquez sur Certificats, puis sur Ajouter.

    6. Cliquez sur Compte d'ordinateur, puis sur Suivant.

    7. Vérifiez que l'option Ordinateur local : (l'ordinateur sur lequel cette console s'exécute) est sélectionnée et cliquez sur Terminer.

    8. Cliquez sur Fermer puis sur OK.

    9. Dans l'arborescence du volet gauche, développez Certificats (Ordinateur local), puis Personnel et sélectionnez Certificats.

    10. Vérifiez qu'il existe effectivement un certificat doté du nom de domaine complet que vous avez indiqué dans la procédure précédente. Vous pouvez double-cliquer sur le certificat pour afficher les informations qui lui sont associées.

Haut de page

Installer le certificat de l'Autorité de certification émettrice sur le client

Après que le certificat a été installé et que le service SQL Server a été redémarré, SQL Server peut négocier SSL avec les clients. Les clients qui utilisent SSL pour établir une connexion à SQL Server doivent :

  • avoir installé les bibliothèques de connectivité MDAC 2.6 ou SQL Server 2000 ;

  • approuver l'émetteur du certificat SQL Server.

  • Pour installer le certificat de l'Autorité de certification émettrice sur l'ordinateur client

    1. Connectez-vous à l'ordinateur client en tant qu'administrateur.

    2. Démarrez Internet Explorer pour accéder aux services de certificat Microsoft, par exemple :

      http://MyCA/certsrv
      
    3. Cliquez sur Récupérer le certificat d'Autorité de certification ou la liste de révocation de certificats, puis sur Suivant.

    4. Cliquez sur Installez ce chemin d'accès de certification d'Autorité de certification, puis sur Oui en réponse à la boîte de dialogue de confirmation pour installer le certificat racine.

Haut de page

Obliger tous les clients à utiliser SSL

Vous pouvez configurer le serveur de façon à obliger les clients à utiliser le protocole SSL (solution adoptée dans cette procédure) ou vous pouvez laisser aux clients le choix d'utiliser ou non SSL pour chaque connexion (solution adoptée dans la procédure suivante). Obliger tous les clients à utiliser le protocole SSL présente les avantages suivants :

  • La sécurité de toutes les communications est garantie.

  • Toutes les connexions non sécurisées sont refusées.

Les inconvénients sont les suivants :

  • Les bibliothèques de connectivité MDAC 2.6 ou SQL Server 2000 doivent être installées sur tous les clients ; les bibliothèques antérieures ou génériques ne peuvent pas se connecter.

  • Les connexions que vous n'avez pas besoin de sécuriser souffrent d'un léger ralentissement des performances lié au cryptage supplémentaire.

  • Pour obliger tous les clients à utiliser SSL

    1. Sur l'ordinateur exécutant SQL Server, cliquez sur Utilitaire réseau SQL Server dans le groupe de programmes Microsoft SQL Server.

    2. Sélectionnez l'option Forcer le cryptage du protocole.

    3. Vérifiez que TCP/IP et/ou les canaux nommés sont activés.

      SSL n'est pas pris en charge avec les autres protocoles.

    4. Cliquez sur OK pour fermer l'Utilitaire réseau SQL Server et cliquez sur OK en réponse au message Utilitaire réseau SQL Server.

    5. Redémarrez le service SQL Server.

      Toutes les connexions client suivantes devront utiliser SSL, qu'elles soient indiquées comme sécurisées ou non.

Haut de page

Permettre aux clients de déterminer si SSL doit être utilisé

Cette procédure explique comment configurer SSL pour permettre aux clients de choisir d'utiliser SSL ou non. Vous pouvez soit configurer les bibliothèques client pour obliger toutes les connexions à utiliser SSL, soit laisser aux différentes applications la possibilité de choisir SSL ou non pour chaque connexion. Les avantages de la configuration du client sont les suivants :

  • La surcharge liée à SSL ne se produit que pour les connexions qui en ont vraiment besoin.

  • Les clients qui ne prennent pas en charge SSL avec SQL Server peuvent toujours se connecter.

Avant d'adopter cette méthode, assurez-vous que les connexions non sécurisées ne vous posent pas de problème.

  • Pour reconfigurer le serveur

    1. Sur l'ordinateur SQL Server, exécutez l'Utilitaire réseau SQL Server.

    2. Désactivez la case à cocher Forcer le cryptage du protocole.

    3. Redémarrez le service SQL Server.

    4. Revenez à l'ordinateur client.

  • Pour utiliser SSL sur toutes les connexions client

Cette méthode permet de configurer les bibliothèques clientes afin d'utiliser le protocole SSL pour toutes les connexions. Cela signifie que les serveurs SQL ne prenant pas en charge le cryptage et ceux antérieurs à SQL Server 2000 ne seront pas accessibles.

  1. Dans le groupe de programmes Microsoft SQL Server, cliquez sur Utilitaire réseau client.

  2. Vérifiez que TCP/IP et/ou les canaux nommés sont activés.

  3. Sélectionnez l'option Forcer le cryptage du protocole.

  • Pour permettre aux applications de choisir d'utiliser le cryptage ou non

Cette méthode permet aux applications d'utiliser la chaîne de connexion pour choisir d'utiliser ou non le cryptage. Cela offre à chaque application la possibilité d'utiliser le cryptage uniquement si celui-ci est nécessaire.

  1. Si vous utilisez le fournisseur de données OLE-DB pour vous connecter à SQL Server, attribuez à l'option Utiliser le cryptage des données la valeur true , comme dans l'exemple de chaîne de connexion OLE-DB suivant.

        "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security 
        Info=False;Initial Catalog=Northwind;Data Source=sql01;Use Encryption for 
        Data=True"
    
  2. Si vous utilisez le fournisseur de données .NET de SQL Server pour vous connecter à SQL Server, attribuez la valeur true à l'option Crypter, comme dans l'exemple suivant.

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

Haut de page

Vérifier le cryptage des communications

Dans cette procédure, vous utiliserez le Moniteur réseau pour vérifier que les données envoyées entre le serveur d'applications et le serveur de base de données sont cryptées. Vous commencerez par envoyer les données sous forme de texte en texte brut, puis vous activerez le cryptage en configurant d'abord le serveur, puis le client.

  • Pour vérifier que la communication est cryptée

    1. Sur l'ordinateur client, utilisez Visual Studio.NET pour créer une application de console C# nommée SQLSecureClient.

    2. Copiez le code suivant vers class1.cs en remplaçant tout le code existant.

      Remarque : remplacez le nom du serveur dans la chaîne de connexion par le nom de votre serveur de base de données.

      using System;
      using System.Data;
      using System.Data.SqlClient;
      
      namespace SQLSecureClient
      {
        class Class1
        {
          [STAThread]
          static void Main(string[] args)
          {
            // Remplacer le nom du serveur de la chaîne
            de connexion suivante 
            // par le nom de votre serveur de base de données.
            SqlConnection conn = new SqlConnection(
              "server='sql01';database=NorthWind;Integrated Security='SSPI'");
      
            SqlCommand cmd = new SqlCommand("SELECT * FROM 
            Products");      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. Dans le menu Générer, choisissez Générer la solution.

    4. Pour que l'authentification Windows réussisse entre deux ordinateurs, vous devez dupliquer, sur l'ordinateur serveur de bases de données, le compte avec lequel vous êtes actuellement connecté de manière interactive sur l'ordinateur client. Assurez-vous que le nom d'utilisateur et le mot de passe correspondent. Il est également possible d'utiliser un compte de domaine reconnu par les deux ordinateurs. Vous devez aussi utiliser SQL Server Enterprise Manager pour créer une connexion de base de données destinée au nouveau compte et ajouter un utilisateur de base de données pour cette connexion à la base de données Northwind.

    5. Sur l'ordinateur du serveur de base de données, exécutez l'Utilitaire réseau SQL Server pour désactiver l'utilisation du cryptage, en vous assurant que l'option Forcer le cryptage du protocole n'est pas sélectionnée.

    6. Sur l'ordinateur du serveur de base de données, cliquez sur Moniteur réseau dans le groupe de programmes Outils d'administration.

      Remarque : une version limitée du Moniteur réseau est fournie dans Windows 2000 Server. La version complète est fournie dans Microsoft SMS.

      Si le Moniteur réseau n'est pas installé, accédez à Ajout/Suppression de programmes dans le Panneau de configuration, cliquez sur Ajouter ou supprimer des composants Windows, sélectionnez Outils de gestion et d'analyse dans la liste Composants Windows, cliquez sur Détails, puis sélectionnez Outils d'analyse réseau. Cliquez sur OK, puis sur Suivant pour installer la version limitée du Moniteur réseau. Le CD-ROM de Windows 2000 Server peut vous être demandé.

    7. Dans le menu Capturer, choisissez Filtrer pour créer un filtre destiné à afficher le trafic réseau TCP/IP entre le serveur d'applications et le serveur de base de données.

    8. Cliquez sur le bouton Démarrer la capture.

    9. Revenez à l'ordinateur client et exécutez l'application console de test. Une liste de produits émanant de la base de données Northwind doit être affichée dans la fenêtre de la console.

    10. Revenez au serveur de base de données et cliquez sur le bouton Arrêter et afficher la capture dans le Moniteur réseau.

    11. Double-cliquez sur le premier cadre capturé pour afficher les données capturées.

    12. Faites défiler les cadres capturés. Vous devez voir l'instruction SELECT en texte brut, suivie de la liste des produits extraits de la base de données.

    13. Imposez à présent l'utilisation du cryptage pour toutes les connexions en configurant le serveur avec l'utilitaire réseau SQL Server :

      1. Exécutez l'utilitaire réseau SQL Server pour sélectionner l'option Forcer le cryptage du protocole.

      2. Arrêtez et redémarrez le service SQL Server.

    14. Revenez au Moniteur réseau et cliquez sur le bouton Démarrer la capture. Dans la boîte de dialogue Enregistrer le fichier, cliquez sur Non.

    15. Revenez à l'ordinateur client et exécutez de nouveau l'application console de test.

    16. Revenez au serveur de base de données et cliquez sur Arrêter et afficher la capture dans le Moniteur réseau.

    17. Vérifiez que les données sont désormais incompréhensibles (du fait de leur cryptage).

    18. Reconfigurez le serveur pour ne plus imposer le cryptage :

      1. Exécutez l'Utilitaire réseau SQL Server et désactivez la case à cocher Forcer le cryptage du protocole.

      2. Arrêtez et redémarrez le service SQL Server.

    19. Démarrez une nouvelle capture dans le Moniteur réseau et redémarrez l'application client. Vérifiez que les données apparaissent de nouveau en texte brut.

    20. Revenez à l'ordinateur client et sélectionnez Utilitaire réseau client dans le groupe de programmes Microsoft SQL Server.

    21. Sélectionnez Forcer le cryptage du protocole et cliquez sur OK pour fermer l'Utilitaire réseau client.

    22. Revenez au Moniteur réseau et cliquez sur le bouton Démarrer la capture. Dans la boîte de dialogue Enregistrer le fichier, cliquez sur Non.

    23. Revenez à l'ordinateur client et exécutez de nouveau l'application console de test.

    24. Revenez au serveur de base de données et cliquez sur Arrêter et afficher la capture dans le Moniteur réseau.

    25. Vérifiez que les données ne sont plus lisibles (car elles sont cryptées). Remarquez que dans tous les cas, SQL Server envoie son certificat d'authentification serveur en texte brut au client, au début de la séquence de communication. Cela fait partie du protocole SSL. Notez que cette opération est effectuée même si le serveur et le client ne nécessite aucun cryptage.

Haut de page

Ressources supplémentaires

Pour plus d'informations sur l'installation du Moniteur réseau sur Windows 2000, consultez les articles (en anglais) suivants de la Base de connaissances Microsoft :

Pour plus d'informations sur le Moniteur réseau, consultez la section « Network Monitor » (en anglais) du kit de développement de la plate-forme Microsoft sur MSDN, à l'adresse : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/netmon/netmon/network_monitor.asp.

Haut de page