Todos os produtos
Search
Central de documentação

ApsaraDB RDS:Conectar a uma instância do ApsaraDB RDS for PostgreSQL via SSL

Última atualização: Jul 10, 2026

Conecte-se a uma instância do ApsaraDB RDS for PostgreSQL por meio de uma conexão SSL criptografada usando pgAdmin, psql ou JDBC.

Pré-requisitos

Antes de começar, verifique se você tem:

Escolha um método de conexão

Ferramenta

Mais indicado para

pgAdmin

Gerenciamento de banco de dados com interface gráfica e consultas interativas

psql

Scripts, automação e fluxos de trabalho em linha de comando

JDBC

Aplicações Java que se conectam ao banco de dados programaticamente

Referência de modos SSL

Os três métodos de conexão utilizam os mesmos valores de modo SSL. Escolha conforme seus requisitos de segurança:

Modo SSL

Comportamento

Quando usar

require

Criptografa a conexão, mas não valida o certificado do servidor

Criptografia básica sem verificação de certificado

verify-ca

Criptografa a conexão e valida o certificado CA do servidor

Recomendado para a maioria dos cenários de produção

verify-full

Criptografa a conexão, valida o certificado CA do servidor e verifica se o CN ou DNS no certificado do servidor corresponde ao endpoint de conexão

Maior nível de segurança; protege contra ataques man-in-the-middle

disable

Sem criptografia SSL. Disponível apenas se nenhuma lista de controle de acesso (ACL) estiver configurada na instância

Apenas para desenvolvimento ou testes em redes confiáveis

Se houver ACLs configuradas na instância RDS, ela aceitará apenas conexões SSL. Defina o modo SSL como require , verify-ca ou verify-full .

Conectar usando pgAdmin

O pgAdmin 4 é incluído quando você instale o PostgreSQL a partir do site oficial do PostgreSQL. Para usar o pgAdmin sem instalar o PostgreSQL, baixe-o separadamente em pgAdmin.

Os passos a seguir usam o pgAdmin 4 V6.2.0 como exemplo.

  1. Inicie o pgAdmin 4.

    No primeiro login, o pgAdmin solicita que você defina uma senha mestra para proteger senhas salvas e credenciais.
  2. Clique em com o botão direito em Servers e escolha Register > Server.

  3. Na aba General, insira um nome para o servidor.

  4. Na aba Connection, insira os detalhes da conexão.

    Parâmetro

    Descrição

    Host name/address

    Endpoint da instância RDS. Use o endpoint interno para conexões VPC ou o endpoint público para conexões pela Internet. Encontre essa informação na página Database Connection. Consulte Visualize e alterar endpoints e números de porta de uma instância do ApsaraDB RDS for PostgreSQL.

    Port

    Número da porta para a conexão. Encontre essa informação na página Database Connection.

    Username

    Nome de usuário da conta do banco de dados. Consulte Crie um banco de dados e uma conta.

    Password

    Senha da conta do banco de dados.

    Informações de conexão

  5. Na aba Parameters, configure as definições de SSL.

    É possível usar um certificado personalizado ( server-ca.crt ) ou um certificado cloud ( ApsaraDB-CA-Chain.pem ) como certificado raiz. Utilize o caminho real do arquivo no seu sistema.

    Parâmetro

    Descrição

    SSL mode

    Modo SSL. Consulte Referência de modos SSL para visualizar os valores disponíveis e quando usar cada um.

    Client certificate

    Caminho para client.crt. Obrigatório apenas se você configurou um certificado CA de cliente.

    Client certificate key

    Caminho para client.key. Obrigatório apenas se você configurou um certificado CA de cliente.

    Root certificate

    Caminho para o arquivo do certificado CA do servidor. Obrigatório quando o SSL mode está definido como Verify-CA ou Verify-Full.

  6. Clique em Save. Se a conexão for bem-sucedida, a árvore de bancos de dados será expandida no painel do pgAdmin.

    Importante

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

Conectar usando psql

O cliente PostgreSQL deve estar instalado na sua máquina. Consulte a documentação do PostgreSQL .
  1. No diretório /var/lib/pgsql, crie uma pasta chamada .postgresql.

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

    Os arquivos client.crt e client.key são necessários apenas se você configurou um certificado CA de cliente. Você pode usar um certificado personalizado (server-ca.crt) ou um certificado cloud (ApsaraDB-CA-Chain.pem). Use o caminho real do arquivo ao executar os comandos.
    cp client.crt client.key server-ca.crt /var/lib/pgsql/.postgresql/
  3. Defina a propriedade e as permissões dos arquivos na pasta .postgresql.

    chown postgres:postgres /var/lib/pgsql/.postgresql/*
    chmod 600 /var/lib/pgsql/.postgresql/*
  4. Abra o arquivo de variáveis de ambiente para edição.

    vim /var/lib/pgsql/.bash_profile
  5. Pressione i para entrar no modo de edição e adicione as seguintes variáveis de ambiente:

    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.

    export PGSSLMODE="verify-full"
  9. Conecte-se à instância RDS.

    Marcador

    Descrição

    Onde encontrar

    <Endpoint>

    Endpoint protegido por SSL da instância RDS

    Protected Host na aba SSL Encryption da página Data Security

    <Username>

    Nome de usuário da conta do banco de dados

    Página Accounts

    <Port number>

    Número da porta (padrão: 5432)

    Página Database Connection

    <Database name>

    Nome do banco de dados ao qual se conectar

    Página Database Connection

    psql -h <Endpoint> -U <Username> -p <Port number> -d <Database name>

    Substitua os marcadores pelos seus valores reais:

Importante

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

Conectar usando JDBC

Passo 1: Obter os arquivos de certificado

Baixe os seguintes arquivos para o host onde sua aplicação Java é executada:

  • server-ca.crt: Certificado CA do servidor. Consulte a seção Pré-requisitos para saber como obtê-lo.

  • client.crt e client.key: Necessários apenas se você configurou um certificado CA de cliente.

Passo 2: Converter a chave privada do cliente para o formato PKCS8 (PK8)

O JDBC exige a chave privada do cliente no formato PKCS8 (PK8). Execute o seguinte comando no host onde sua aplicação é executada:

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:
Aviso

Execute este comando no mesmo host onde sua aplicação é executada. Se você executá-lo em um host diferente e copiar o arquivo, os seguintes erros podem 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

Passo 3: Adicionar a dependência do driver JDBC do PostgreSQL

Adicione a seguinte dependência ao seu pom.xml:

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

Passo 4: Conectar à instância RDS

O exemplo abaixo usa um certificado personalizado ( server-ca.crt ). Para usar um certificado cloud, substitua server-ca.crt por 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();
        }
    }
}

Próximos passos