Mise à jour des applications pour se connecter aux instances de bases de données PostgreSQL à l'aide des nouveaux certificats SSL/TLS - Amazon Relational Database Service

Mise à jour des applications pour se connecter aux instances de bases de données PostgreSQL à l'aide des nouveaux certificats SSL/TLS

Les certificats utilisés pour Secure Socket Layer ou Transport Layer Security (SSL/TLS) ont généralement une durée de vie définie. Lorsque les fournisseurs de services mettent à jour leurs certificats d'autorité de certification (CA), les clients doivent mettre à jour leurs applications pour utiliser les nouveaux certificats. Vous trouverez ci-dessous des informations sur la façon de déterminer si vos applications clientes utilisent un protocole SSL/TLS pour se connecter à votre instance de base de données Amazon RDS pour PostgreSQL. Vous trouverez également des informations sur la façon de vérifier si ces applications vérifient le certificat du serveur lorsqu'elles se connectent.

Note

Une application cliente configurée pour vérifier le certificat serveur avant la connexion SSL/TLS doit avoir un certificat d'autorité de certification valide dans le magasin de confiance du client. Mettez à jour le magasin de confiance du client lorsque cela est nécessaire pour de nouveaux certificats.

Une fois que vous avez mis à jour les certificats de l'autorité de certification dans les magasins d'approbations des applications clientes, vous pouvez soumettre les certificats de vos instances de bases de données à une rotation. Nous vous recommandons vivement de tester ces procédures dans un environnement de développement ou intermédiaire avant de les implémenter dans vos environnements de production.

Pour plus d’informations sur la rotation de certificats, consultez Rotation de votre certificat SSL/TLS. Pour en savoir plus sur le téléchargement de certificats, consultez Utilisation de SSL/TLS pour chiffrer une connexion à une instance de base de données. Pour plus d’informations sur l’utilisation des protocoles SSL/TLS avec les instances de bases de données PostgreSQL, consultez Utilisation de SSL avec une instance de base de données PostgreSQL.

Contrôle de la connexion des applications aux instances de bases de données PostgreSQL avec le protocole SSL

Dans la configuration de l'instance de base de données, vérifiez la valeur du paramètre rds.force_ssl. Par défaut, le paramètre rds.force_ssl est défini sur 0 (désactivé) pour les instances de base de données utilisant des versions de PostgreSQL antérieures à la version 15. Par défaut, rds.force_ssl est défini sur 1 (activé) pour les instances de base de données utilisant des versions de PostgreSQL version 15 et ultérieures majeures. Si le paramètre rds.force_ssl est défini sur 1 (activé), les clients doivent utiliser le protocole SSL/TLS pour se connecter. Pour plus d'informations sur les groupes de paramètres, consultez Groupes de paramètres pour Amazon RDS.

Si vous utilisez RDS PostgreSQL version 9.5 ou ultérieure et que rds.force_ssl n'est pas défini sur 1 (activé), interrogez la vue pg_stat_ssl afin de vérifier les connexions à l'aide du protocole SSL. Par exemple, la requête suivante retourne uniquement les connexions SSL et les informations sur les clients utilisant un protocole SSL.

SELECT datname, usename, ssl, client_addr FROM pg_stat_ssl INNER JOIN pg_stat_activity ON pg_stat_ssl.pid = pg_stat_activity.pid WHERE ssl is true and usename<>'rdsadmin';

Seules les lignes utilisant des connexions SSL/TLS s'affichent avec les informations sur la connexion. Voici un exemple de sortie.

datname | usename | ssl | client_addr ----------+---------+-----+------------- benchdb | pgadmin | t | 53.95.6.13 postgres | pgadmin | t | 53.95.6.13 (2 rows)

La requête n'affiche que les connexions actives au moment de la requête. L'absence de résultats n'implique pas forcément qu'aucune application n'utilise de connexions SSL. D'autres connexions SSL peuvent avoir été établies à un moment différent.

Contrôle de la nécessité d'une vérification du certificat du client pour qu'il puisse se connecter

Quand un client, tel que psql ou JDBC, est configuré avec la prise en charge du protocole SSL, le comportement par défaut est le suivant : le client essaie d'abord de se connecter à la base de données avec le protocole SSL. En cas d’impossibilité, le client revient à la connexion sans protocole SSL. Le mode sslmode utilisé par défaut pour les clients libpq (comme psql) et JDBC est défini sur prefer. Le certificat sur le serveur n’est vérifié que lorsque sslrootcert est fourni avec sslmode défini sur verify-ca ou verify-full. En cas de non-validité du certificat, une erreur est déclenchée.

Utilisez PGSSLROOTCERT pour vérifier le certificat avec la variable d’environnement PGSSLMODE, avec PGSSLMODE défini sur verify-ca ou verify-full.

PGSSLMODE=verify-full PGSSLROOTCERT=/fullpath/ssl-cert.pem psql -h pgdbidentifier.cxxxxxxxx.us-east-2.rds.amazonaws.com -U masteruser -d postgres

Utilisez l’argument sslrootcert pour vérifier le certificat ayant sslmode comme format de chaîne de connexion, avec sslmode défini sur verify-ca ou verify-full.

psql "host=pgdbidentifier.cxxxxxxxx.us-east-2.rds.amazonaws.com sslmode=verify-full sslrootcert=/full/path/ssl-cert.pem user=masteruser dbname=postgres"

Par exemple, dans le cas précédent, si vous utilisez un certificat racine non valide, une erreur similaire à celle qui suit s'affiche sur votre client.

psql: SSL error: certificate verify failed

Mise à jour du magasin d'approbations de votre application

Pour plus d’informations sur la mise à jour du magasin d’approbations pour les applications PostgreSQL, consultez Secure TCP/IP Connections with SSL dans la documentation PostgreSQL.

Pour plus d'informations sur le téléchargement du certificat racine, consultez Utilisation de SSL/TLS pour chiffrer une connexion à une instance de base de données.

Pour obtenir des exemples de scripts qui importent des certificats, consultez Exemple de script pour importer les certificats dans votre magasin d'approbations.

Note

Lors de la mise à jour du magasin d'approbations, vous pouvez conserver les certificats plus anciens en complément de l'ajout des nouveaux certificats.

Utilisation des connexions SSL/TLS pour différents types d'application

Les informations suivantes se rapportent à l'utilisation de connexions SSL/TLS pour différents types d'application.

  • psql

    Le client est appelé depuis la ligne de commande en spécifiant des options comme chaîne de connexion ou comme variables d'environnement. Pour les connexions SSL/TLS, les options pertinentes sont sslmode (variable d'environnement PGSSLMODE) et sslrootcert (variable d'environnement PGSSLROOTCERT).

    Pour obtenir la liste complète des options, consultez Parameter Key Words dans la documentation PostgreSQL. Pour obtenir la liste complète des variables d’environnement, consultez Environment Variables dans la documentation PostgreSQL.

  • pgAdmin

    Ce client basé sur un navigateur est une interface plus conviviale pour se connecter à une base de données PostgreSQL.

    Pour plus d’informations sur la configuration des connexions, consultez la documentation pgAdmin.

  • JDBC

    JDBC permet de se connecter à la base de données avec des applications Java.

    Pour obtenir des informations générales sur la connexion à une base de données PostgreSQL avec JDBC, consultez Connecting to the Database (Connexion à la base de données) dans la documentation du pilote JDBC PostgreSQL. Pour obtenir des informations sur la connexion avec un protocole SSL/TLS, consultez Configuring the client (Configuration du client) dans la documentation du pilote JDBC PostgreSQL.

  • Python

    est une bibliothèque Python bien connue pour se connecter aux bases de données PostgreSQ psycopg2.

    Pour plus d’informations sur l’utilisation de psycopg2, consultez la documentation psycopg2. Pour obtenir un bref didacticiel sur la connexion à une base de données PostgreSQL, consultez Psycopg2 Tutorial. Vous trouverez des informations sur les options acceptées par la commande de connexion dans The psycopg2 module content.

Important

Une fois que vous avez déterminé que vos connexions de base de données utilisent SSL/TLS et que vous avez mis à jour le magasin d'approbations de votre application, vous pouvez mettre à jour votre base de données pour utiliser les certificats rds-ca-rsa2048-g1. Pour obtenir des instructions, consultez l’étape 3 dans Mise à jour de votre certificat CA en modifiant votre instance de base de données ou votre cluster.