Share via


Understanding SSL Support

Lors de la connexion à SQL Server, si l'application demande un chiffrement et que l'instance de SQL Server est configuré pour prendre en charge le chiffrement SSL, le pilote JDBC Microsoft SQL Server 2005 initie la négociation SSL. Celle-ci permet au serveur et au client de négocier le chiffrement et les algorithmes de chiffrement à utiliser pour protéger les données. Une fois la négociation SSL terminée, le client et le serveur peuvent envoyer les données chiffrées de manière sécurisée. Pendant la négociation SSL, le serveur envoie son certificat de clé publique au client. L'émetteur d'un certificat de clé publique porte le nom d'Autorité de certification. Le client est chargé de vérifier que l'autorité de certification est approuvée par le client.

Si l'application ne demande pas de chiffrement, le pilote JDBC Microsoft SQL Server 2005 ne force pas SQL Server à prendre en charge le chiffrement SSL. Si l'instance SQL Server n'est pas configurée pour forcer le chiffrement SSL, une connexion est établie sans chiffrement. Si l'instance SQL Server est configurée pour forcer le chiffrement SSL, le pilote activera automatiquement le chiffrement SSL lors de l'exécution sur une machine virtuelle Java (JVM) configurée correctement, sinon la connexion sera interrompue et le pilote déclenchera une erreur.

NoteRemarque :

Pour plus d'informations sur la configuration du protocole SSL pour SQL Server, consultez la rubrique sur le chiffrement des connexions à SQL Server dans la documentation en ligne de SQL Server 2005.

Pour permettre aux applications d'utiliser le chiffrement SSL, le pilote Microsoft SQL Server 2005 JDBC version 1.2 fournit les propriétés de connexion suivantes : encrypt, trustServerCertificate, trustStore, trustStorePassword et hostNameInCertificate. Pour plus d'informations, consultez Définition des propriétés de connexion.

Le tableau suivant résume le comportement du pilote Microsoft SQL Server 2005 JDBC version 1.2 pour les différents scénarios de connexion SSL possibles. Chaque scénario utilise un ensemble différent de propriétés de connexion SSL. Le tableau inclut :

  • blank : « La propriété n'existe pas dans la chaîne de connexion »

  • value : « La propriété existe dans la chaîne de connexion et sa valeur est valide »

  • any : « Peu importe si la propriété existe dans la chaîne de connexion ou si sa valeur est valide »

NoteRemarque :

Le même comportement s'applique à l'authentification utilisateur SQL Server et à l'authentification intégrée Windows.

encrypt trustServerCertificate hostNameInCertificate trustStore trustStorePassword Comportement

false ou blank

n'importe laquelle

n'importe laquelle

n'importe laquelle

n'importe laquelle

Le pilote JDBC Microsoft SQL Server 2005 ne forcera pas SQL Server à prendre en charge le chiffrement SSL. Si le serveur a un certificat auto-signé, le pilote initie l'échange de certificat SSL. Le certificat SSL ne sera pas validé et seules les informations d'identification (dans le paquet de connexion) sont chiffrées.

Si le serveur requiert que le client prenne en charge le chiffrement SSL, le pilote initiera l'échange de certificat SSL. Le certificat SSL ne sera pas validé, mais la communication entière sera chiffrée.

NoteRemarque :

Sur certaines machines virtuelles Java version 1.4, le pilote JDBC peut ne pas chiffrer les informations d'identification de connexion. Nous recommandons l'utilisation d'une version plus récente de JVM si possible.

true

true

n'importe laquelle

n'importe laquelle

n'importe laquelle

Le pilote JDBC Microsoft SQL Server 2005 demande d'utiliser le chiffrement SSL avec SQL Server.

Si le serveur requiert que le client prenne en charge le chiffrement SSL ou si le serveur prend en charge le chiffrement, le pilote initiera l'échange de certificat SSL. Notez que si la propriété trustServerCertificate a la valeur « true », le pilote ne validera pas le certificat SSL.

Si le serveur n'est pas configuré pour prendre en charge le chiffrement, le pilote déclenchera une erreur et interrompra la connexion.

true

false ou blank

blank

blank

blank

Le pilote JDBC Microsoft SQL Server 2005 demande d'utiliser le chiffrement SSL avec SQL Server.

Si le serveur requiert que le client prenne en charge le chiffrement SSL ou si le serveur prend en charge le chiffrement, le pilote initiera l'échange de certificat SSL.

Le pilote utilisera la propriété serverName spécifiée sur l'URL de connexion pour valider le certificat SSL de serveur et se fiera aux règles de recherche de la fabrique de gestionnaire de confiance pour déterminer le magasin de certificats à utiliser.

Si le serveur n'est pas configuré pour prendre en charge le chiffrement, le pilote déclenchera une erreur et interrompra la connexion.

true

false ou blank

valeur

blank

blank

Le pilote JDBC Microsoft SQL Server 2005 demande d'utiliser le chiffrement SSL avec SQL Server.

Si le serveur requiert que le client prenne en charge le chiffrement SSL ou si le serveur prend en charge le chiffrement, le pilote initiera l'échange de certificat SSL.

Le pilote validera la valeur de sujet du certificat SSL à l'aide de la valeur spécifiée pour la propriété hostNameInCertificate.

Si le serveur n'est pas configuré pour prendre en charge le chiffrement, le pilote déclenchera une erreur et interrompra la connexion.

true

false ou blank

blank

valeur

valeur

Le pilote JDBC Microsoft SQL Server 2005 demande d'utiliser le chiffrement SSL avec SQL Server.

Si le serveur requiert que le client prenne en charge le chiffrement SSL ou si le serveur prend en charge le chiffrement, le pilote initiera l'échange de certificat SSL.

Le pilote utilisera la valeur de propriété trustStore pour rechercher le fichier trustStore de certificat et la valeur de propriété trustStorePassword pour vérifier l'intégrité du fichier trustStore.

Si le serveur n'est pas configuré pour prendre en charge le chiffrement, le pilote déclenchera une erreur et interrompra la connexion.

true

false ou blank

blank

blank

value

Le pilote JDBC Microsoft SQL Server 2005 demande d'utiliser le chiffrement SSL avec SQL Server.

Si le serveur requiert que le client prenne en charge le chiffrement SSL ou si le serveur prend en charge le chiffrement, le pilote initiera l'échange de certificat SSL.

Le pilote utilisera la valeur de propriété trustStorePassword pour vérifier l'intégrité du fichier trustStore par défaut.

Si le serveur n'est pas configuré pour prendre en charge le chiffrement, le pilote déclenchera une erreur et interrompra la connexion.

true

false ou blank

blank

valeur

blank

Le pilote JDBC Microsoft SQL Server 2005 demande d'utiliser le chiffrement SSL avec SQL Server.

Si le serveur requiert que le client prenne en charge le chiffrement SSL ou si le serveur prend en charge le chiffrement, le pilote initiera l'échange de certificat SSL.

Le pilote utilisera la valeur de propriété trustStore pour rechercher l'emplacement du fichier trustStore.

Si le serveur n'est pas configuré pour prendre en charge le chiffrement, le pilote déclenchera une erreur et interrompra la connexion.

true

false ou blank

valeur

blank

valeur

Le pilote JDBC Microsoft SQL Server 2005 demande d'utiliser le chiffrement SSL avec SQL Server.

Si le serveur requiert que le client prenne en charge le chiffrement SSL ou si le serveur prend en charge le chiffrement, le pilote initiera l'échange de certificat SSL.

Le pilote utilisera la valeur de propriété trustStorePassword pour vérifier l'intégrité du fichier trustStore par défaut. De plus, le pilote utilisera la valeur de propriété hostNameInCertificate pour valider le certificat SSL.

Si le serveur n'est pas configuré pour prendre en charge le chiffrement, le pilote déclenchera une erreur et interrompra la connexion.

true

false ou blank

valeur

valeur

blank

Le pilote JDBC Microsoft SQL Server 2005 demande d'utiliser le chiffrement SSL avec SQL Server.

Si le serveur requiert que le client prenne en charge le chiffrement SSL ou si le serveur prend en charge le chiffrement, le pilote initiera l'échange de certificat SSL.

Le pilote utilisera la valeur de propriété trustStore pour rechercher l'emplacement du fichier trustStore. De plus, le pilote utilisera la valeur de propriété hostNameInCertificate pour valider le certificat SSL.

Si le serveur n'est pas configuré pour prendre en charge le chiffrement, le pilote déclenchera une erreur et interrompra la connexion.

true

false ou blank

valeur

valeur

valeur

Le pilote JDBC Microsoft SQL Server 2005 demande d'utiliser le chiffrement SSL avec SQL Server.

Si le serveur requiert que le client prenne en charge le chiffrement SSL ou si le serveur prend en charge le chiffrement, le pilote initiera l'échange de certificat SSL.

Le pilote utilisera la valeur de propriété trustStore pour rechercher le fichier trustStore de certificat et la valeur de propriété trustStorePassword pour vérifier l'intégrité du fichier trustStore. De plus, le pilote utilisera la valeur de propriété hostNameInCertificate pour valider le certificat SSL.

Si le serveur n'est pas configuré pour prendre en charge le chiffrement, le pilote déclenchera une erreur et interrompra la connexion.

Si la propriété de chiffrement a la valeur true, le pilote JDBC Microsoft SQL Server 2005 utilise le fournisseur de sécurité JSSE par défaut de la machine virtuelle Java pour négocier le chiffrement SSL avec SQL Server. Le fournisseur de sécurité par défaut peut ne pas prendre en charge toutes les fonctionnalités requises pour négocier le chiffrement SSL avec succès. Par exemple, le fournisseur de sécurité par défaut peut ne pas prendre en charge la taille de la clé publique RSA utilisée dans le certificat SSL SQL Server. Dans ce cas, le fournisseur de sécurité par défaut peut déclencher une erreur qui forcera le pilote JDBC à mettre fin à la connexion. Pour résoudre ce problème, effectuez l'une des opérations suivantes :

  • Configurer l'ordinateur SQL Server avec un certificat de serveur qui a une plus petite clé publique RSA

  • Configurer la machine JVM de façon à utiliser un autre fournisseur de sécurité JSSE dans le fichier de propriétés de sécurité « <java-home>/lib/security/java.security »

  • Utiliser une autre machine JVM

Validation du certificat SSL de serveur

Pendant la négociation SSL, le serveur envoie son certificat de clé publique au client. Le client ou pilote JDBC doit confirmer que le certificat de serveur est publié par une autorité de certification approuvée par le client. Le pilote requiert que le certificat de serveur réponde aux conditions suivantes :

  • Le certificat a été publié par une autorité de certification approuvée.

  • Le certificat doit être publié pour l'authentification de serveur.

  • Le certificat n'a pas expiré.

  • La propriété de sujet du certificat indique que le nom commun (CN) commence par le nom de serveur spécifié dans la chaîne de connexion ou, si elle est spécifiée, la valeur de propriété hostNameInCertificate. Si le nom du serveur est une adresse IP, le pilote vérifie que la valeur CN commence par l'adresse IP.

Voir aussi

Concepts

Utilisation du chiffrement SSL

Autres ressources

Sécurisation des applications de pilote JDBC