Todos os produtos
Search
Central de documentação

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

Última atualização: Aug 21, 2026

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

Pré-requisitos

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

Escolher um método de conexão

Ferramenta

Mais indicado para

pgAdmin

Gerenciamento de banco de dados via GUI e consultas interativas

psql

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

JDBC

Aplicações Java que se conectam ao banco de dados de forma programática

Referência de modos SSL

Os três métodos de conexão usam os mesmos valores de modo SSL. Escolha de acordo com 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 confere se o CN ou DNS do certificado do servidor corresponde ao endpoint da conexão

Segurança máxima; 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

Somente 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 o pgAdmin

O pgAdmin 4 já vem incluído quando você instale o PostgreSQL a partir do site oficial do PostgreSQL. Para usar o pgAdmin sem instale 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 as senhas e credenciais salvas.
  2. Clique em com o botão direito em Servers e escolha Register > Server.

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

  4. Na guia Connection, informe os detalhes de conexão.

    Parâmetro

    Descrição

    Host name/address

    O endpoint da instância RDS. Use o endpoint interno para conexões via VPC ou o endpoint público para conexões via Internet. Localize-o na página Database Connection. Consulte View and change the endpoints and port numbers of an ApsaraDB RDS for PostgreSQL instance.

    Port

    O número da porta da conexão. Localize-o na página Database Connection.

    Username

    O nome de usuário da conta do banco de dados. Consulte Create a database and an account.

    Password

    A senha da conta do banco de dados.

    连接信息

  5. Na guia Parameters, configure as opções de SSL.

    Como certificado raiz, use um certificado personalizado ( server-ca.crt ) ou um certificado da cloud ( ApsaraDB-CA-Chain.pem ). Utilize o caminho real do arquivo no seu sistema.

    Parâmetro

    Descrição

    SSL mode

    O modo SSL. Consulte Referência de modos SSL para ver os valores disponíveis e quando aplicar cada um.

    Client certificate

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

    Client certificate key

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

    Root certificate

    O caminho para o arquivo de certificado CA do servidor. Necessário quando SSL mode estiver definido como Verify-CA ou Verify-Full.

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

    Importante

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

Conectar usando o 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 da cloud (ApsaraDB-CA-Chain.pem). Utilize o caminho real do arquivo ao executar os comandos.
    cp client.crt client.key server-ca.crt /var/lib/pgsql/.postgresql/
  3. Defina o proprietário 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 edite.

    vim /var/lib/pgsql/.bash_profile
  5. Pressione i para entrar no modo de edite 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 edite e digite :wq para salve 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.

    Placeholder

    Descrição

    Onde encontrar

    <Endpoint>

    O endpoint da instância RDS protegido por SSL

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

    <Username>

    O nome de usuário da conta do banco de dados

    Página Accounts

    <Port number>

    O número da porta (padrão: 5432)

    Página Database Connection

    <Database name>

    O 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 placeholders pelos seus valores reais:

Importante

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

Conectar usando JDBC

Etapa 1: Obter os arquivos de certificado

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

  • server-ca.crt: o 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.

Etapa 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 em que sua aplicação é executada. Se você executá-lo em outro host e copiar o arquivo, podem ocorrer os seguintes erros:

  • 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

Etapa 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>

Etapa 4: Conectar-se à instância RDS

O exemplo abaixo usa um certificado personalizado ( server-ca.crt ). Para usar um certificado da 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óximas etapas