Tous les produits
Search
Centre de documentation

ApsaraDB RDS:Connect to an ApsaraDB RDS for PostgreSQL instance over SSL

Dernière mise à jour :Aug 21, 2026

Établissez une connexion SSL chiffrée vers une instance ApsaraDB RDS for PostgreSQL en utilisant pgAdmin, psql ou JDBC.

Prérequis

Avant de commencer, assurez-vous d'avoir :

Choisir une méthode de connexion

Outil Meilleur usage
pgAdmin Gestion de base de données via interface graphique et requêtes interactives
psql Scripts, automatisation et workflows en ligne de commande
JDBC Applications Java se connectant à la base de données par programmation

Référence des modes SSL

Les trois méthodes de connexion utilisent les mêmes valeurs de mode SSL. Choisissez celle qui correspond à vos exigences de sécurité :

Mode SSL Comportement Quand l'utiliser
require Chiffre la connexion sans valider le certificat du serveur Chiffrement de base sans vérification du certificat
verify-ca Chiffre la connexion et valide le certificat CA du serveur Recommandé pour la plupart des cas d'utilisation en production
verify-full Chiffre la connexion, valide le certificat CA du serveur et vérifie que le CN ou le DNS du certificat correspond au point de terminaison de connexion Sécurité maximale ; protège contre les attaques de type « man-in-the-middle »
disable Aucun chiffrement SSL. Disponible uniquement si aucune liste de contrôle d'accès (ACL) n'est configurée sur l'instance Développement ou tests exclusivement dans des réseaux de confiance
Si des ACL sont configurées sur l'instance RDS, celle-ci n'accepte que les connexions SSL. Définissez le mode SSL sur require , verify-ca ou verify-full .

Se connecter avec pgAdmin

pgAdmin 4 est inclus lors de l'installation de PostgreSQL depuis le site officiel de PostgreSQL. Pour utiliser pgAdmin sans installer PostgreSQL, téléchargez-le séparément depuis pgAdmin.

Les étapes suivantes utilisent pgAdmin 4 V6.2.0 à titre d'exemple.

  1. Démarrez pgAdmin 4.

    Lors de la première connexion, pgAdmin vous demande de définir un mot de passe maître pour protéger les mots de passe et les identifiants enregistrés.
  2. Cliquez avec le bouton droit sur Servers, puis choisissez Register > Server.

  3. Dans l'onglet General, saisissez un nom pour le serveur.

  4. Dans l'onglet Connection, renseignez les détails de la connexion.

    Paramètre Description
    Host name/address Point de terminaison de l'instance RDS. Utilisez le point de terminaison interne pour les connexions VPC, ou le point de terminaison public pour les connexions Internet. Vous trouverez cette information sur la page Database Connection. Consultez la rubrique Afficher et modifier les points de terminaison et les numéros de port d'une instance ApsaraDB RDS for PostgreSQL.
    Port Numéro de port pour la connexion. Vous trouverez cette information sur la page Database Connection.
    Username Nom d'utilisateur du compte de base de données. Consultez la rubrique Créer une base de données et un compte.
    Password Mot de passe du compte de base de données.

    连接信息

  5. Dans l'onglet Parameters, configurez les paramètres SSL.

    Vous pouvez utiliser soit un certificat personnalisé ( server-ca.crt ), soit un certificat cloud ( ApsaraDB-CA-Chain.pem ) comme certificat racine. Indiquez le chemin d'accès réel sur votre système.
    Paramètre Description
    SSL mode Mode SSL. Consultez la section Référence des modes SSL pour connaître les valeurs disponibles et leur utilisation.
    Client certificate Chemin d'accès vers client.crt. Requis uniquement si vous avez configuré un certificat CA client.
    Client certificate key Chemin d'accès vers client.key. Requis uniquement si vous avez configuré un certificat CA client.
    Root certificate Chemin d'accès vers le fichier du certificat CA du serveur. Requis lorsque le paramètre SSL mode est défini sur Verify-CA ou Verify-Full.
  6. Cliquez sur Save. Si la connexion réussit, l'arborescence de la base de données s'affiche dans le panneau pgAdmin.

    Important

    La base de données postgres est la base de données système par défaut. N'effectuez aucune opération dessus.

Se connecter avec psql

Le client PostgreSQL doit être installé sur votre machine. Consultez la documentation PostgreSQL .
  1. Dans le répertoire /var/lib/pgsql, créez un dossier nommé .postgresql.

    mkdir /var/lib/pgsql/.postgresql
  2. Copiez les fichiers de certificat dans le dossier .postgresql.

    Les fichiers client.crt et client.key sont requis uniquement si vous avez configuré un certificat CA client. Vous pouvez utiliser soit un certificat personnalisé (server-ca.crt), soit un certificat cloud (ApsaraDB-CA-Chain.pem). Utilisez le chemin d'accès réel lors de l'exécution des commandes.
    cp client.crt client.key server-ca.crt /var/lib/pgsql/.postgresql/
  3. Définissez le propriétaire et les permissions des fichiers dans le dossier .postgresql.

    chown postgres:postgres /var/lib/pgsql/.postgresql/*
    chmod 600 /var/lib/pgsql/.postgresql/*
  4. Ouvrez le fichier des variables d'environnement pour le modifier.

    vim /var/lib/pgsql/.bash_profile
  5. Appuyez sur i pour entrer en mode édition, puis ajoutez les variables d'environnement suivantes :

    export PGSSLCERT="/var/lib/pgsql/.postgresql/client.crt"
    export PGSSLKEY="/var/lib/pgsql/.postgresql/client.key"
    export PGSSLROOTCERT="/var/lib/pgsql/.postgresql/ca1.crt"
  6. Appuyez sur Esc pour quitter le mode édition, puis saisissez :wq pour enregistrer et quitter.

  7. Rechargez les variables d'environnement.

    source .bash_profile
  8. Définissez le mode SSL.

    export PGSSLMODE="verify-full"
  9. Connectez-vous à l'instance RDS.

    Espace réservé Description Où le trouver
    <Endpoint> Point de terminaison protégé par SSL de l'instance RDS Champ Protected Host dans l'onglet SSL Encryption de la page Data Security
    <Username> Nom d'utilisateur du compte de base de données Page Accounts
    <Port number> Numéro de port (par défaut : 5432) Page Database Connection
    <Database name> Nom de la base de données à laquelle se connecter Page Database Connection
    psql -h <Endpoint> -U <Username> -p <Port number> -d <Database name>

    Remplacez les espaces réservés par vos valeurs réelles :

Important

La base de données postgres est la base de données système par défaut. N'effectuez aucune opération dessus.

Se connecter avec JDBC

Étape 1 : Obtenir les fichiers de certificat

Téléchargez les fichiers suivants sur l'hôte où s'exécute votre application Java :

  • server-ca.crt : Certificat CA du serveur. Reportez-vous à la section Prérequis pour savoir comment l'obtenir.

  • client.crt et client.key : Requis uniquement si vous avez configuré un certificat CA client.

Étape 2 : Convertir la clé privée client au format PKCS8 (PK8)

JDBC nécessite que la clé privée client soit au format PKCS8 (PK8). Exécutez la commande suivante sur l'hôte où s'exécute votre application :

openssl pkcs8 -topk8 -inform PEM -in client.key -outform der -out client.pk8 -v1 PBE-MD5-DES
# Enter the encryption password when prompted. You will use this password in your code.
Enter Encryption Password:
Verifying - Enter Encryption Password:
Avertissement

Exécutez cette commande sur le même hôte que celui où s'exécute votre application. Si vous l'exécutez sur un autre hôte puis copiez le fichier, les erreurs suivantes peuvent survenir :

  • org.postgresql.util.PSQLException: Could not decrypt SSL key file C:/Users/XXX/XXX/client.pk8

  • org.postgresql.util.PSQLException: SSL error: Received fatal alert: unexpected_message

Étape 3 : Ajouter la dépendance du pilote JDBC PostgreSQL

Ajoutez la dépendance suivante à votre fichier pom.xml :

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.2.10</version>
</dependency>

Étape 4 : Se connecter à l'instance RDS

L'exemple ci-dessous utilise un certificat personnalisé ( server-ca.crt ). Pour utiliser un certificat cloud, remplacez server-ca.crt par ApsaraDB-CA-Chain.pem .
public class PgSslDemo {
    public static void main(String[] args) {
        // Endpoint of the RDS instance
        String hostname = "pgm-bp1gclw58u36s6****.pg.rds.aliyuncs.com";
        // Port number (default: 5432)
        String port = "5432";
        // Database name
        String dbname = "postgres";

        String jdbcUrl = "jdbc:postgresql://" + hostname + ":" + port + "/" + dbname + "?binaryTransfer=true";

        Properties properties = new Properties();
        // Database account username
        properties.setProperty("user", "test_user");
        // Database account password
        properties.setProperty("password", "test_pwd");
        // Directory where certificate files are stored
        String path = "D:\\ssl\\";

        // Enable SSL
        properties.setProperty("ssl", "true");
        // Path to the server CA certificate
        properties.setProperty("sslrootcert", path + "/" + "server-ca.crt");
        // Path to the client private key (PKCS8 format)
        properties.setProperty("sslkey", path + "/" + "client.pk8");
        // Path to the client certificate
        properties.setProperty("sslcert", path + "/" + "client.crt");
        // The encryption password set when converting client.key to PKCS8 format
        properties.setProperty("sslpassword", "test_ssl_pwd");

        // SSL mode: require, verify-ca, or verify-full
        properties.setProperty("sslmode", "verify-ca");

        try {
            Class.forName("org.postgresql.Driver");
            Connection connection = DriverManager.getConnection(jdbcUrl, properties);
            // Example: query all rows from the students01 table
            PreparedStatement preparedStatement = connection.prepareStatement("select * from students01");
            ResultSet resultSet = preparedStatement.executeQuery();
            while (resultSet.next()) {
                ResultSetMetaData rsmd = resultSet.getMetaData();
                int columnCount = rsmd.getColumnCount();
                Map map = new HashMap();
                for (int i = 0; i < columnCount; i++) {
                    map.put(rsmd.getColumnName(i + 1).toLowerCase(), resultSet.getObject(i + 1));
                }
                System.out.println(map);
            }
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }
}

Étapes suivantes