PostgreSQL prend en charge la connexion SSL qui permet aux utilisateurs de se connecter en toute sécurité à leurs bases de données. Dans cet article, nous verrons comment activer SSL dans la base de données PostgreSQL.
Comment activer SSL dans PostgreSQL
Voici les étapes pour activer la connexion SSL dans PostgreSQL. Sur le serveur PostgreSQL, nous avons besoin de 3 certificats dans le répertoire de données pour la configuration SSL. Ce sont :
- root.crt (certificat racine de confiance)
- serveur.crt (certificat de serveur)
- server.key (clé privée)
Ouvrez le terminal et exécutez la commande suivante pour exécuter en tant que root
$ sudo -
$ cd /var/lib/pgsql/data
Générer une clé privée en utilisant openssl. Vous serez invité à entrer la phrase de passe.
$ openssl genrsa -des3 -out server.key 1024
Supprimer la phrase de passe
$ openssl rsa -in server.key -out server.key
Lecture bonus :meilleurs blogs de base de données à suivre
Mettez à jour l'autorisation de fichier et la propriété du fichier de clé privée.
$ chmod 400 server.key
$ chown postgres.postgres server.key
De même, créez un certificat de serveur
$ openssl req -new -key server.key -days 3650 -out server.crt -x509
Dans l'instruction ci-dessus, -x509 indique un certificat auto-signé. Vous serez invité à entrer des détails tels que l'e-mail, le pays, etc. Entrez-le et terminez la génération du certificat.
Puisque nous utilisons un certificat auto-signé, nous utiliserons notre clé de serveur comme certificat racine.
$ cp server.crt root.crt
Mettez à jour pg_hba.conf pour ajouter les lignes suivantes
# IPv4 remote connections for authenticated users hostssl all www-data 0.0.0.0/0 md5 clientcert=1 hostssl all postgres 0.0.0.0/0 md5 clientcert=1
Modifiez postgresql.conf pour ajouter la ligne suivante
ssl = on
Redémarrez le serveur PostgreSQL
$ /etc/init.d/postgresql restart
Lecture bonus :comment augmenter le nombre maximal de connexions dans PostgreSQL
Activer SSL dans le client PostgreSQL
Nous avons également besoin de 3 fichiers pour activer SSL dans le client PostgreSQL. Nous les stockerons dans ~/.postgresql/ répertoire
- root.crt (certificat racine de confiance)
- postgresql.crt (certificat client)
- postgresql.key (clé privée)
Créez postgresql.key sur la machine cliente et supprimez la phrase de passe.
$openssl genrsa -des3 -out /tmp/postgresql.key 1024
$openssl rsa -in /tmp/postgresql.key -out /tmp/postgresql.key
Lecture bonus :Conseils de réglage des performances PostgreSQL
Ensuite, nous créons postgresql.crt et le signons en utilisant la racine de confiance (fichier de clé privée du serveur). Veuillez noter , lorsque vous êtes invité à entrer le nom commun du certificat (CN), définissez-le sur le nom de la base de données.
$openssl req -new -key /tmp/postgresql.key -out /tmp/postgresql.csr
$openssl x509 -req -in server.req -out /tmp/postgresql.csr -CA root.crt -CAkey server.key -out /tmp/postgresql.crt -CAcreateserial
Copiez les trois fichiers créés dans le répertoire /tmp du serveur sur la machine cliente. Copiez root.crt du répertoire /tmp du serveur vers ~/.postgresql/ du client répertoire.
Espérons que cet article vous aidera à activer SSL dans PostgreSQL.