PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 23/01/2020 08:52:20

pheugene
Membre

Quelles pistes pour investiguer une erreur de connexion SSL

Bonjour,

J'ai un serveur PostgreSQL 9.6 tournant dans une VM sous un Windows Server 2012.
Ce serveur est configuré pour accepter les connexions SSL :

La configuration ssl dans le fichier pg_hba_conf.

host 	   all		all	       0.0.0.0/0	 md5
hostssl    all          postgres,X,X   127.0.0.1/32      md5

Le configuration ssl dans le fichier postgresql.conf

ssl = on				# (change requires restart)
ssl_ciphers = 'EDH-RSA-DES-CBC3-SHA:XXXXXXXXXXXXXXXXX'
ssl_cert_file = '.\\tls\\server-postgresql.crt'	# (change requires restart)
ssl_key_file = '.\\tls\\server-postgresql.key'	# (change requires restart)
ssl_ca_file = '.\\tls\\ca-postgresql.crt'	# (change requires restart)
password_encryption = on

Dans le répertoire tls les 2 fichiers crt et le fichier key sont present. L'utilisateur qui lance le service windows postgres a un contrôle total sur ces trois fichiers.

Pour faire une migration de base de donnée j'utilise un outil flyway qui cherche à se connecter à la base avec l'url :

jdbc:postgresql://localhost:5432/XXXXX?ssl=true&sslmode=disable

Tout marche bien. La migration de base de donnée se fait correctement.


Par contre, sur un site distant, avec la même configuration, la migration ne marche plus :

Unable to obtain connection from database (jdbc:postgresql://localhost:5432/XXXX?ssl=true&sslmode=disable) 
for user 'postgres': FATAL: aucune entrée dans pg_hba.conf pour l'hôte « 127.0.0.1 », 
utilisateur « postgres », base de données « XXXX », SSL inactif 
(pgjdbc: autodetected server-encoding to be ISO-8859-1, if the message is not readable, please check database logs and/or host, port, dbname, user, password, pg_hba.conf)

Pour l'instant j'ai fait les vérifications suivantes sur le site distant :

- vérification du fichier pg_hba.conf
- vérification du fichier posgtgresql.conf
- vérification de la présence des certificats ssl
- vérification des droits sur les 3 certificats ssl.
- connection de l'utilisateur postgres via psql : message de la console SSL ACTIF.
- essayer une connexion avec cette url : jdbc:postgresql://localhost:5432/XXXX => erreur hanshake failure.


J'avais pensé qu'au démarrage de Postgres une erreur aurait empêché l'activation de SSL.
La connection via psql montre bien que le SSL est actif sur le serveur PostgreSQL.


Là je me retrouve un peu dans une impasse, je ne sais plus trop quoi aller vérifier.
Ce qui m'interpelle dans le message d'erreur c'est SSL inactif. Et pourtant la connexion via psql
inqique bien que le SSL est actif.


Si vous avez la moindre idée je suis preneur.
En vous remerciant.

--
Philippe

Hors ligne

#2 23/01/2020 09:53:32

pheugene
Membre

Re : Quelles pistes pour investiguer une erreur de connexion SSL

Je viens de recevoir les logs du serveur et j'ai un peu plus d'informations :

Voici un extrait du log :

L'utilisateur USER_XXXX se connecte sur la base que je veux migrer DB_XXXX en mode SSL

2020-01-21 09:40:52 CET 5e26b914.70c [inconnu] LOG:  connexion reçue : hôte=127.0.0.1 port=57405
2020-01-21 09:40:52 CET 5e26b914.70c USER_XXX LOG:  connexion autorisée : utilisateur=USER_XXXXXX, 
base de données=DB_XXXX, 
SSL activé (protocole=TLSv1.2, chiffrement=EDH-RSA-DES-CBC3-SHA, compression=désactivé)

L'utilisateur postgres se connecte à la base postgres en mode SSL :

2020-01-21 14:03:48 CET 5e26f6b4.258 postgres LOG:  connexion autorisée : utilisateur=postgres, 
base de données=postgres, 
SSL activé (protocole=TLSv1.2, chiffrement=EDH-RSA-DES-CBC3-SHA, compression=désactivé)

Mais lorsque l'utilisateur postgres veut se connecter sur la base DB_XXXX

2020-01-21 13:58:31 CET 5e26f577.208 [inconnu] LOG:  connexion reçue : hôte=127.0.0.1 port=57645
2020-01-21 13:58:31 CET 5e26f577.208 postgres FATAL:  aucune entrée dans pg_hba.conf pour l'hôte « 127.0.0.1 », utilisateur « postgres »,
	base de données « DB_XXX », SSL inactif
2020-01-21 14:01:35 CET 5e26f62f.d2c [inconnu] LOG:  connexion reçue : hôte=127.0.0.1 port=57649
2020-01-21 14:01:35 CET 5e26f62f.d2c postgres FATAL:  aucune entrée dans pg_hba.conf pour l'hôte « 127.0.0.1 », utilisateur « postgres »,
	base de données « DB_XXX », SSL inactif
2020-01-21 14:03:16 CET 5e26f694.a5c [inconnu] LOG:  connexion reçue : hôte=127.0.0.1 port=57650
2020-01-21 14:03:17 CET 5e26f694.a5c [inconnu] LOG:  n'a pas pu accepter la connexion SSL : no shared cipher
2020-01-21 14:03:42 CET 5e26f6ae.d7c [inconnu] LOG:  connexion reçue : hôte=127.0.0.1 port=57651
2020-01-21 14:03:48 CET 5e26f6b4.258 [inconnu] LOG:  connexion reçue : hôte=127.0.0.1 port=57652
2020-01-21 14:03:48 CET 5e26f6b4.258 postgres LOG:  connexion autorisée : utilisateur=postgres, 
base de données=postgres, 
SSL activé (protocole=TLSv1.2, chiffrement=EDH-RSA-DES-CBC3-SHA, compression=désactivé)

Je fais des recherches sur cette erreur : LOG:  n'a pas pu accepter la connexion SSL : no shared cipher

Dernière modification par pheugene (23/01/2020 10:13:39)

Hors ligne

#3 24/01/2020 11:16:37

dverite
Membre

Re : Quelles pistes pour investiguer une erreur de connexion SSL

jdbc:postgresql://localhost:5432/XXXXX?ssl=true&sslmode=disable

D'après https://jdbc.postgresql.org/documentati … lient.html
sslmode=disable est contradictoire avec ssl=true. Pourquoi utiliser cette combinaison d'options?

Hors ligne

#4 24/01/2020 16:07:48

pheugene
Membre

Re : Quelles pistes pour investiguer une erreur de connexion SSL

J'ai testé 2 mode : sslmode=disable & sslmode=allow.

ça ne change rien au problème de connection.

Je continu à investiguer les éventuelles différences de configuration entre les 2 serveurs.

Hors ligne

Pied de page des forums