Todos os produtos
Search
Central de documentação

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

Última atualização: Oct 15, 2026

Este tópico descreve como se conectar a um banco de dados usando pgAdmin, psql e JDBC após ativar a criptografia SSL.

Pré-requisitos

Etapas

pgAdmin

O pgAdmin é a ferramenta oficial recomendada pelo PostgreSQL para conexões com bancos de dados. Ao baixar e instalar o PostgreSQL no site oficial do PostgreSQL, o cliente pgAdmin 4 é instalado automaticamente. Este procedimento descreve como se conectar a uma instância do ApsaraDB for RDS for PostgreSQL, usando pgAdmin 4 V6.2.0 como exemplo.

Caso não queira instalar o PostgreSQL, baixe o cliente pgAdmin separadamente para se conectar a bancos de dados remotos.

  1. Inicie o pgAdmin 4.

    Nota

    Se esta for a primeira vez que você faz login em uma versão mais recente do pgAdmin, especifique uma senha mestra para proteger as senhas salvas e outras credenciais.

  2. Clique com o botão direito em Servers e escolha Register > Server.

  3. Na aba General da caixa de diálogo Register - Server, insira o nome do servidor onde o pgAdmin está instalado.

  4. Na aba Connection, configure as definições de Connection inserindo os seguintes parâmetros da sua instância.

    Parâmetro

    Descrição

    Host name/address

    O endpoint e a porta usados para conectar-se à instância RDS.

    • Para conexão via rede interna, insira o endpoint interno e a porta interna da instância RDS.

    • Para conexão via Internet, insira o endpoint público e a porta pública da instância RDS.

    Essas informações estão disponíveis na página Database Connection da instância RDS.

    Para mais informações, consulte Visualizar e alterar os endpoints e números de porta de uma instância ApsaraDB RDS for PostgreSQL.

    Port

    Username

    O nome de usuário e a senha usados para fazer login na instância RDS.

    Para mais informações sobre como criar uma conta em uma instância RDS, consulte Criar uma conta e um banco de dados.

    Password

  5. Selecione a aba Parameters, adicione os parâmetros para autenticação SSL e configure os certificados.

    Parâmetro

    Descrição

    SSL mode

    Após ativar a criptografia SSL, sua instância PostgreSQL aceita conexões SSL. Ao conectar-se a partir de um cliente, selecione um valor para o parâmetro SSL mode conforme os cenários abaixo:

    • Se você não configurou um lista de controle de acesso (ACL) para o banco de dados:

      • Para conectar via SSL, defina SSL mode como Require, Verify-CA ou Verify-Full.

      • Para conectar sem SSL, defina SSL mode como Disable.

    • Se você configurou um lista de controle de acesso (ACL) para o banco de dados, a conexão deve ser feita via SSL. Defina SSL mode como Require, Verify-CA ou Verify-Full.

    Os modos são definidos da seguinte forma:

    • Require: criptografa a conexão, mas não verifica a identidade do banco de dados.

    • Verify-CA: criptografa a conexão e verifica a identidade do banco de dados.

    • Verify-Full: criptografa a conexão, verifica a identidade do banco de dados e valida se o Common Name (CN) ou o nome DNS no certificado corresponde ao endpoint configurado para a conexão.

    Client certificate

    Se você seguiu o procedimento em Configurar um certificado de CA do cliente, configure este parâmetro. Ele especifica o certificado do cliente (client.crt).

    Client certificate key

    Se você seguiu o procedimento em Configurar um certificado de CA do cliente, configure este parâmetro. Ele especifica a chave privada do cliente (client.key).

    Root certificate

    Se você definiu SSL mode como Verify-CA ou Verify-Full, configure este parâmetro. Ele especifica o caminho do certificado de CA do servidor.

    Nota
    • Neste exemplo, configure os caminhos dos arquivos para o certificado do cliente (client.crt), a chave privada do cliente (client.key) e o certificado de CA do servidor (server-ca.crt) de acordo com seu ambiente real.

    • Este exemplo usa um certificado personalizado. Também é possível configurar um certificado cloud. Por exemplo, substitua server-ca.crt por ApsaraDB-CA-Chain.pem.

  6. Clique em Save.

    Se as informações inseridas estiverem corretas, a página mostrada na figura a seguir será exibida, indicando que a conexão com a instância RDS foi bem-sucedida.

    Importante

    O banco de dados postgres é o banco de dados padrão do sistema. Não execute operações no banco de dados postgres.

psql

Nota

Este procedimento utiliza a ferramenta de linha de comando psql incluída no cliente PostgreSQL. Certifique-se de ter instalado o cliente PostgreSQL. Para mais informações, consulte a documentação oficial do PostgreSQL.

  1. No diretório /var/lib/pgsql, crie uma pasta .postgresql.

    mkdir /var/lib/pgsql/.postgresql
  2. Copie os seguintes arquivos para a pasta .postgresql.

    cp client.crt client.key server-ca.crt /var/lib/pgsql/.postgresql/
    Nota
    • Neste exemplo, configure os caminhos dos arquivos para o certificado do cliente (client.crt), a chave privada do cliente (client.key) e o certificado de CA do servidor (server-ca.crt) de acordo com seu ambiente real.

    • Este exemplo usa um certificado personalizado. Também é possível usar um certificado cloud. Por exemplo, substitua server-ca.crt por ApsaraDB-CA-Chain.pem.

  3. Altere as permissões da pasta .postgresql e de seu conteúdo.

    chown postgres:postgres /var/lib/pgsql/.postgresql/*
    chmod 600 /var/lib/pgsql/.postgresql/*
  4. Execute o comando a seguir para editar as variáveis de ambiente do usuário postgres:

    vim /var/lib/pgsql/.bash_profile
  5. Pressione i para entrar no modo de edição e adicione o seguinte conteúdo.

    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. Pressione Esc para sair do modo de edição e insira :wq para salvar e sair.

  7. Recarregue as variáveis de ambiente.

    source .bash_profile
  8. Defina o modo SSL para a conexão do cliente.

    export PGSSLMODE="verify-full"

    Após ativar a criptografia SSL, sua instância PostgreSQL aceita conexões SSL. Ao conectar-se a partir de um cliente, selecione um valor para o parâmetro PGSSLMODE conforme os cenários abaixo:

    O banco de dados possui controle de acesso de cliente configurado?

    SSL obrigatório

    Valor de PGSSLMODE

    Não

    Sim

    require, verify-ca ou verify-full

    Não

    disable

    Sim

    Sim

    require, verify-ca ou verify-full

    Nota

    Os modos são definidos da seguinte forma:

    • require: criptografa a conexão, mas não verifica a identidade do banco de dados.

    • verify-ca: criptografa a conexão e verifica a identidade do banco de dados.

    • verify-full: criptografa a conexão, verifica a identidade do banco de dados e valida se o Common Name (CN) ou o nome DNS no certificado corresponde ao endpoint configurado para a conexão.

  9. Conecte-se ao banco de dados.

    psql -h <endpoint> -U <username> -p <port> -d <database_name>

    Obtenha os parâmetros no console do ApsaraDB RDS:

    Parâmetro

    Origem

    endpoint

    O endpoint criptografado. Obtenha o endpoint no parâmetro Protected Host na página SSL.

    username

    Obtenha o nome de usuário na página Accounts.

    port

    A porta padrão é 5432. Se você alterou o número da porta, obtenha-o na página Database Connection.

    database_name

    O banco de dados postgres é o banco de dados padrão do sistema da instância RDS. Não execute operações neste banco de dados. Para conectar-se a outro banco de dados criado na instância RDS, obtenha o nome do banco na página Databases.

JDBC

  1. Baixe os seguintes arquivos para o seu dispositivo local:

  2. Converta a chave privada do cliente (client.key) para o formato PKCS#8.

    openssl pkcs8 -topk8 -inform PEM -in client.key -outform der -out client.pk8 -v1 PBE-MD5-DES
    # The command prompts you to enter a password, which is required for the connection.
    Enter Encryption Password:
    Verifying - Enter Encryption Password:
    Aviso

    Execute este comando no host onde sua aplicação está em execução. Use o comando openssl nesse host para converter a chave privada para o formato PKCS#8. Caso contrário, um dos seguintes erros poderá ocorrer:

    • 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

  3. Para um projeto Maven, adicione a dependência do PostgreSQL ao arquivo pom.xml.

     <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>42.2.10</version>
      </dependency>
  4. No código da sua aplicação, use JDBC para conectar-se ao PostgreSQL via conexão SSL.

    Nota

    Este exemplo usa um certificado personalizado. Também é possível usar um certificado cloud. Por exemplo, substitua server-ca.crt por ApsaraDB-CA-Chain.pem.

    public class PgSslDemo {
        public static void main(String[] args) {
            // Set the endpoint of the ApsaraDB for RDS for PostgreSQL instance.
            String hostname = "pgm-bp1gclw58u36s6****.pg.rds.aliyuncs.com";
            // Set the port of the ApsaraDB for RDS for PostgreSQL instance.
            String port = "5432";
            // Set the name of the database to connect to.
            String dbname = "postgres";
    
            String jdbcUrl = "jdbc:postgresql://" + hostname + ":" + port + "/" + dbname + "?binaryTransfer=true";
    
            Properties properties = new Properties();
            // Set the username to connect to the database.
            properties.setProperty("user", "test_user");
            // Set the password to connect to the database.
            properties.setProperty("password", "test_pwd");
            // Set the directory where the certificates are stored.
            String path = "D:\\ssl\\";
    
            // Enable SSL connection.
            properties.setProperty("ssl", "true");
            // Specify the file name of the server CA certificate.
            properties.setProperty("sslrootcert", path + "/" + "server-ca.crt");
            // Specify the file name of the client private key in PKCS#8 format.
            properties.setProperty("sslkey", path + "/" + "client.pk8");
            // Specify the file name of the client certificate.
            properties.setProperty("sslcert", path + "/" + "client.crt");
            // Enter the password that you set when converting the private key to the PKCS#8 format.
            properties.setProperty("sslpassword", "test_ssl_pwd");
    
            // Set the SSL mode. Valid values: require, verify-ca, and verify-full.
            properties.setProperty("sslmode", "verify-ca");
    
            try {
                Class.forName("org.postgresql.Driver");
                Connection connection = DriverManager.getConnection(jdbcUrl, properties);
                // This example assumes that a table named students01 exists in the postgres database.
                // Query data 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();
            }
        }
    }