Todos os produtos
Search
Central de documentação

Hologres:Encryption in transit

Última atualização: Sep 18, 2026

Para aumentar a segurança das transferências de dados entre sua aplicação cliente e o Hologres, ative a criptografia em trânsito com Secure Sockets Layer (SSL). O SSL utiliza certificados digitais e protocolos criptográficos, como Transport Layer Security (TLS), para estabelecer uma conexão criptografada entre uma instância do Hologres e um cliente. Esse processo protege a confidencialidade e a integridade dos dados em trânsito.

Cenários

A criptografia em trânsito com SSL é adequada para os seguintes cenários:

  • Acesso remoto a banco de dados: quando um cliente precisa acessar um banco de dados de um local remoto, a criptografia em trânsito SSL protege os dados durante a transmissão.

  • Conformidade regulatória: muitos padrões e regulamentos do setor exigem que os dados sejam criptografados em trânsito. A criptografia SSL ajuda sua organização a atender a esses requisitos de segurança e conformidade.

O SSL criptografa conexões de rede na camada de transporte, o que aumenta a segurança e a integridade dos dados, mas também adiciona latência de rede.

Pré-requisitos

Observações de uso

  • O Hologres V1.1 e versões posteriores oferecem suporte à criptografia em trânsito. O Hologres V1.2 e versões posteriores oferecem suporte a TLS. O Hologres V2.1 e versões posteriores oferecem suporte à criptografia em trânsito com certificado CA, e você pode ativar esse recurso pelo console do Hologres.

    Nota

    Se sua instância for anterior à V1.1, consulte Troubleshooting: Upgrade preparation errors ou entre no grupo DingTalk do Hologres para obter suporte. Para mais informações, consulte How do I get more online support?.

  • Ativar ou desativar a criptografia SSL em trânsito reinicia a instância — prossiga com cautela. Por padrão, esse recurso está desativado.

    • Após ativar a criptografia SSL em uma instância do Hologres, os clientes podem se conectar à instância via SSL. Configure o cliente explicitamente para usar uma conexão criptografada ou não criptografada.

    • Se a criptografia SSL for desativada em uma instância do Hologres, somente conexões não SSL serão permitidas.

  • O Hologres oferece suporte aos seguintes modos SSL para criptografia em trânsito:

    Modo SSL

    Versão mínima com suporte

    Require: criptografa apenas o link de dados.

    V1.1

    Verify-CA: criptografa o link de dados e usa um certificado CA para verificar a autenticidade do servidor Hologres.

    V2.1

    Verify-Full: criptografa o link de dados, usa um certificado CA para verificar a autenticidade do servidor Hologres e verifica se o CN ou DNS no certificado corresponde ao endereço de conexão do Hologres configurado para a conexão.

    V2.1

  • O certificado SSL é válido por um ano. Renove-o manualmente antes do vencimento; caso contrário, não será mais possível usar a criptografia SSL para se conectar à instância.

  • Ativar a criptografia SSL em trânsito aumenta o consumo de CPU e a latência de leitura/gravação.

  • Após ativar a criptografia SSL em trânsito, desconecte e reconecte as conexões existentes para que a criptografia entre em vigor.

  • Ativar ou desativar a criptografia SSL em trânsito, bem como renovar o certificado SSL, reinicia a instância do Hologres. O processo leva cerca de 3 minutos. Execute essas operações durante períodos de baixo uso.

Etapa 1: Ativar a criptografia em trânsito

  1. Faça login no console do Hologres e selecione uma região no canto superior esquerdo.

  2. No painel de navegação à esquerda, clique em Instances e depois clique no ID da instância de destino.

  3. Na página de detalhes da instância, clique em Data Security.

  4. Na aba SSL, ative o botão SSL Encryption.

  5. Na caixa de diálogo Enable SSL Encryption, clique em Enable SSL Encryption.

Etapa 2: Baixar o certificado CA

O Hologres fornece um certificado CA para sua instância. Use esse certificado CA no cliente remoto para verificar a autenticidade da instância.

  1. Faça login no console do Hologres e selecione uma região no canto superior esquerdo.

  2. No painel de navegação à esquerda, clique em Instances e depois clique no ID da instância de destino.

  3. Na página de detalhes da instância, clique em Data Security.

  4. Na aba SSL, clique em Download Certificate.

Etapa 3: Conectar ao Hologres

Conecte-se ao Hologres usando um cliente PSQL ou JDBC. Durante o processo de conexão, configure parâmetros para controlar se a criptografia SSL em trânsito será ativada.

PSQL client

  • Comando de conexão

    PG_USER=<AccessKey ID> 
    PG_PASSWORD=<AccessKey Secret> 
    PG_SSLMODE=<SSL Mode> 
    PG_SSLROOTCERT=<certificate folder> 
    PGSSLMODE=$PG_SSLMODE PGSSLROOTCERT=$PG_SSLROOTCERT PGUSER=$PG_USER PGPASSWORD=$PG_PASSWORD psql -p <Port> -h <Endpoint> -d <Database>
  • Parâmetros

    Parâmetro

    Descrição

    AccessKey ID

    O AccessKey ID da sua conta da Alibaba Cloud. Obtenha-o em AccessKey.

    Recomendamos usar variáveis de ambiente para credenciais a fim de reduzir o risco de exposição.

    AccessKey Secret

    O AccessKey Secret da sua conta da Alibaba Cloud.

    Obtenha-o em AccessKey.

    Recomendamos usar variáveis de ambiente para credenciais a fim de reduzir o risco de exposição.

    SSL Mode

    Especifica o modo SSL para a conexão PSQL. Valores válidos:

    • require: usa criptografia em trânsito e criptografa apenas o link de dados.

    • verify-ca: criptografa o link de dados e verifica a autenticidade da instância do Hologres.

    • verify-full: criptografa o link de dados, verifica a autenticidade da instância do Hologres e verifica se o CN ou DNS no certificado corresponde ao endereço de conexão do banco de dados configurado para a conexão.

    • disable: não usa criptografia em trânsito.

    certificate folder

    O caminho de armazenamento do certificado CA.

    Este parâmetro é obrigatório quando o parâmetro SSL Mode está definido como verify-ca ou verify-full.

    port

    A porta pública da instância do Hologres.

    Exemplo: 80.

    endpoint

    O endpoint público da instância do Hologres.

    Exemplo: xxx-cn-hangzhou.hologres.aliyuncs.com.

    database

    O nome do banco de dados do Hologres.

    Ao criar uma instância do Hologres, um banco de dados padrão chamado postgres é criado automaticamente.

    É possível usar o banco de dados postgres para se conectar ao Hologres, mas esse banco de dados possui recursos limitados. Para uso em produção, recomendamos criar um novo banco de dados. Para mais informações, consulte Create a database.

    Exemplo: mydb.

  • Verifique a conexão.

    Se PGSSLMODE estiver definido como require, a saída a seguir indica que a conexão com o Hologres usa criptografia SSL.

    PGUSER=$PG_USER PGPASSWORD=$PG_PASSWORD PGSSLMODE=require psql -h $HOST_NAME -p $PORT -d $DB -E
    psql (14.2, server 11.3)
    SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
    Type "help" for help.

JDBC

Ao usar JDBC para se conectar ao Hologres, utilize os parâmetros de conexão ssl e sslmode para controlar o uso da criptografia SSL. O comportamento resultante da conexão está descrito na tabela a seguir.

SSL ativado na instância

ssl

sslmode

Resultado

Sim

true

  • require

  • verify-ca

  • verify-full

A conexão é estabelecida com sucesso e os dados são criptografados em trânsito.

Sim

false

  • require

  • verify-ca

  • verify-full

A conexão é estabelecida com sucesso, mas os dados não são criptografados em trânsito.

Não

true

  • require

  • verify-ca

  • verify-full

Um erro é reportado. Exemplo:

/Users/timothyding/Library/Java/JavaVirtualMachines/corretto-1.8.0_322/Contents/Home/bin/java ...
org.postgresql.util.PSQLException Create breakpoint : The server does not support SSL.
	at org.postgresql.core.v3.ConnectionFactoryImpl.enableSSL(ConnectionFactoryImpl.java:524)
	at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:149)
	at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:213)
	at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:51)
	at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:225)
	at org.postgresql.Driver.makeConnection(Driver.java:465)
	at org.postgresql.Driver.connect(Driver.java:264)
	at java.sql.DriverManager.getConnection(DriverManager.java:664)
	at java.sql.DriverManager.getConnection(DriverManager.java:208)
	at rds_ssl_test.main(rds_ssl_test.java:34)

Não

false

  • require

  • verify-ca

  • verify-full

A conexão é estabelecida com sucesso, mas os dados não são criptografados em trânsito.

O código a seguir apresenta um exemplo.

 // Set the endpoint of the Hologres instance.
 String hostname = "hgxxxxxxx-cn-hangzhou-vpc.hologres.aliyuncs.com:80";
 // Set the port of the Hologres instance.
 String port = "80";
 // 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 database username. Using an environment variable is recommended.
 properties.setProperty("user", "accessid");
 // Set the database password. Using an environment variable is recommended.
 properties.setProperty("password", "accesskey");
  // Configure the connection to use SSL.
  properties.setProperty("ssl", "true");
  // Specify the file path of the root certificate.
  properties.setProperty("sslrootcert", path + "/" + "hologres_certificate.crt");
  // Set the SSL mode. Valid values are require, verify-ca, and verify-full.
  properties.setProperty("sslmode", "verify-full");
  try {
      Class.forName("org.postgresql.Driver");
      Connection connection = DriverManager.getConnection(jdbcUrl, properties);
      // The following code queries the 'example' table, which is assumed to exist.
      PreparedStatement preparedStatement = connection.prepareStatement("select * from " +
              "example");
      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();
  }