41 votes

Ma connexion JDBC à la base de données utilise-t-elle SSL ou non ?

Comment savoir si la connexion JDBC à un serveur SQL est sécurisée (c'est-à-dire qu'elle utilise SSL) ou non ?

Est-ce évident, par exemple à partir de l'URL. Tous les pilotes JDBC prennent-ils en charge les connexions SSL au serveur de base de données, ou l'utilisation de SSL dépend-elle simplement du fournisseur de base de données spécifique ?

27voto

Vineet Reynolds Points 40529

Est-ce que tous les pilotes jdbc supportent la connexion ssl au serveur de données et l'utilisation de ssl dépend simplement d'un fournisseur de données spécifique ?

La prise en charge de SSL/TLS n'est pas obligatoire dans la spécification JDBC. Vous ne pouvez donc pas l'attendre de tous les pilotes.

La configuration SSL sur le serveur de base de données pourrait être déduite de l'URL JDBC, mais cela ne doit pas être déterministe. Dans le cas d'Oracle, si vous remarquez que l'URL contient une chaîne de connexion qui indique que le protocole utilisé est TCPS au lieu de TCP, ce qui indique l'utilisation de SSL/TLS. Si vous faites cela pour valider une configuration de sécurité, je vous qualifierais de négligent.

Il n'est pas judicieux de vérifier uniquement la configuration du client pour déterminer si le serveur de base de données accepte les connexions via SSL, surtout si les connexions non-SSL sont interdites. Les mécanismes de vérification de la configuration SSL/TLS varient d'une base de données à l'autre, mais il existe des guides de sécurité appropriés pour la configuration de la base de données dans chaque cas.

Toutefois, si vous souhaitez effectuer un test rapide pour vérifier si la connectivité est assurée par SSl/TLS, il vous suffit de savoir que les connexions sécurisées SSL/TLS sont initiées par une poignée de main. Si vous n'en voyez pas, c'est que votre pilote n'utilise pas SSL/TLS. Pour cela, vous devrez renifler le trafic réseau (assurez-vous d'avoir l'autorisation de le faire). Bien sûr, il faudrait plus de temps pour établir le cas si un pool de connexion était utilisé, car les connexions physiques du pool peuvent être réutilisées à plusieurs reprises (sans que de nouvelles connexions soient établies). De même, vous pourriez trouver nmap utile, mais je ne l'ai jamais utilisé dans ce but.

8voto

5voto

ifx Points 396

À mon avis, un moyen rapide, sûr et neutre par rapport aux fournisseurs d'assurer une connexion SSL entre votre client et votre serveur est d'utiliser s-tunnel .

s-tunnel (parfois aussi appelé "stunnel") vous offre beaucoup de flexibilité, comme l'authentification mutuelle, etc., et permet toujours aux applications installées sur le serveur de base de données de communiquer avec lui via une connexion non-SSL (SQL Server, par exemple, autorise les connexions selon trois modes (SSL OFF, SSL Optional ou SSL Only).

En utilisant s-tunnel, votre connexion serait acheminée de la manière suivante :

jdbc -> local s-tunnel port -> server's s-tunnel port -> server's database port.

En configurant stunnel avec les règles de pare-feu appropriées, vous pouvez être sûr que les connexions distantes à la base de données utilisent SSL.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X