Compartilhar via


Atualizar os certificados do cliente do aplicativo

Ao conectar aplicativos ao Banco de Dados do Azure para PostgreSQL, o cliente do aplicativo deve instalar certificados raiz confiáveis. As seções a seguir orientam você pela atualização dos certificados raiz confiáveis para aplicativos, que é um cenário comum para aplicativos que se conectam a uma instância de servidor flexível do Banco de Dados do Azure para PostgreSQL.

Importante

A partir de 11 de novembro de 2025, as regiões do Azure na lista a seguir estão planejadas para uma rotação de certificados TLS/SSL utilizando novos certificados de autoridades certificadoras intermediárias.

  • Centro-oeste dos EUA
  • Ásia Oriental
  • Sul do Reino Unido

A partir de 19 de janeiro de 2026, essa rotação deve se estender a todas as regiões restantes do Azure, incluindo o Azure Governamental e todas as outras regiões.

Para obter informações sobre solução de problemas, consulte Problemas de fixação de certificado.

Importar certificados de autoridade de certificação raiz no Repositório de Chaves Java no cliente para cenários de fixação de certificado

Os aplicativos Java personalizados usam um repositório de chaves padrão, chamado cacerts, que contém certificados de autoridade de certificação confiável (AC). Também é conhecido como repositório confiável Java. Um arquivo de certificados nomeado cacerts reside no diretório de propriedades de segurança, java.home\lib\security, onde java.home é o diretório de ambiente de runtime (o diretório jre no SDK ou no diretório de nível superior do Ambiente de Runtime do Java™ 2). Você pode usar as seguintes instruções para atualizar certificados raiz CA de cliente para cenários de fixação de certificados com o PostgreSQL:

  1. Verifique o repositório de chaves Java cacerts para ver se ele já contém certificados necessários. Você pode listar os certificados no repositório de chaves Java usando o seguinte comando:

      keytool -list -v -keystore ..\lib\security\cacerts > outputfile.txt
    

    Se os certificados necessários não estiverem presentes no repositório de chaves Java no cliente, como pode ser verificado na saída, você deverá prosseguir com as seguintes instruções:

  2. Faça uma cópia de backup do repositório de chaves personalizado.

  3. Baixe certificados e salve-os localmente onde você pode referenciá-los.

  4. Gere um repositório de certificados de AC combinado com todos os certificados de AC raiz necessários incluídos. O exemplo abaixo mostra o uso do DefaultJavaSSLFactory para usuários JDBC do PostgreSQL.

        keytool -importcert -alias PostgreSQLServerCACert  -file D:\ DigiCertGlobalRootG2.crt.pem   -keystore truststore -storepass password -noprompt
    
        keytool -importcert -alias PostgreSQLServerCACert2  -file "D:\ Microsoft ECC Root Certificate Authority 2017.crt.pem" -keystore truststore -storepass password  -noprompt
    
        keytool -importcert -alias PostgreSQLServerCACert  -file D:\ DigiCertGlobalRootCA.crt.pem   -keystore truststore -storepass password -noprompt
    
  5. Substitua o arquivo de repositório de chaves original pelo novo gerado:

    System.setProperty("javax.net.ssl.trustStore","path_to_truststore_file");
    System.setProperty("javax.net.ssl.trustStorePassword","password");
    
  6. Substitua o arquivo pem da AC raiz original pelo arquivo de AC raiz combinada e reinicie o aplicativo/cliente.

    Para obter mais informações sobre como configurar certificados de cliente com o driver JDBC do PostgreSQL, confira esta documentação.

    Observação

    Para importar certificados para repositórios de certificados do cliente, talvez seja necessário converter arquivos .crt de certificado em formato .pem. Você pode usar o utilitário OpenSSL para fazer essas conversões de arquivo.

Obter uma lista de certificados confiáveis no Repositório de Chaves Java programaticamente

Por padrão, o Java armazena os certificados confiáveis em um arquivo especial chamado cacerts que está localizado dentro da pasta de instalação java no cliente. O exemplo abaixo primeiro lê cacerts e carrega-o no objeto KeyStore:

private KeyStore loadKeyStore() {
    String relativeCacertsPath = "/lib/security/cacerts".replace("/", File.separator);
    String filename = System.getProperty("java.home") + relativeCacertsPath;
    FileInputStream is = new FileInputStream(filename);
    KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
    String password = "changeit";
    keystore.load(is, password.toCharArray());

    return keystore;
}

A senha padrão para cacerts é changeit, mas deve ser diferente no cliente real, pois os administradores recomendam alterar a senha imediatamente após a instalação do Java. Depois de carregarmos o objeto KeyStore, podemos usar a classe PKIXParameters para ler os certificados presentes.

public void whenLoadingCacertsKeyStore_thenCertificatesArePresent() {
    KeyStore keyStore = loadKeyStore();
    PKIXParameters params = new PKIXParameters(keyStore);
    Set<TrustAnchor> trustAnchors = params.getTrustAnchors();
    List<Certificate> certificates = trustAnchors.stream()
      .map(TrustAnchor::getTrustedCert)
      .collect(Collectors.toList());

    assertFalse(certificates.isEmpty());
}

Atualizar certificados de autoridade de certificação raiz ao usar clientes nos Serviços de Aplicativo do Azure para cenários de fixação de certificado

Para os Serviços de Aplicativos do Azure, ao conectar-se a uma instância flexível do Banco de Dados do Azure para PostgreSQL, podemos ter dois cenários possíveis para a atualização dos certificados do cliente, dependendo de como você está utilizando o SSL com seu aplicativo implantado nos Serviços de Aplicativos do Azure.

  • Novos certificados são adicionados ao Serviço de Aplicativo no nível da plataforma antes que ocorram alterações na instância de servidor flexível do Banco de Dados do Azure para PostgreSQL. Se você estiver usando os certificados SSL incluídos na plataforma do Serviço de Aplicativo em seu aplicativo, nenhuma ação será necessária. Para obter mais informações, consulte Adicionar e gerenciar certificados TLS/SSL no Serviço de Aplicativo do Azure, na documentação do Serviço de Aplicativo do Azure.
  • Se você estiver incluindo explicitamente o caminho para o arquivo de certificado SSL em seu código, precisará baixar o novo certificado e atualizar o código para usá-lo. Um bom exemplo desse cenário é quando você usa contêineres personalizados no Serviço de Aplicativo, conforme descrito no Tutorial: Configurar um contêiner sidecar para contêiner personalizado no Serviço de Aplicativo do Azure, na documentação do Serviço de Aplicativo do Azure.

Atualizar certificados de AC raiz ao usar clientes no AKS (Serviço de Kubernetes do Azure) para cenários de fixação de certificado

Se você estiver tentando se conectar ao Banco de Dados do Azure para PostgreSQL usando aplicativos hospedados no Serviços de Kubernetes do Azure (AKS) e fixando certificados, isso será semelhante ao acesso do ambiente de host de um cliente dedicado. Consulte as etapas aqui.

Atualizar certificados de AC raiz para usuários do .NET (Npgsql) no Windows para cenários de fixação de certificado

Para usuários do .NET (Npgsql) no Windows, conectando-se a instâncias de servidor flexíveis do Banco de Dados do Azure para PostgreSQL, verifique se todas as três Autoridades de Certificação Raiz Microsoft RSA Root Certificate Authority 2017, DigiCert Global Root G2 e Digicert Global Root CA existem no Repositório de Certificados do Windows, autoridades de certificação raiz confiáveis. Se não encontrar algum deles, importe o certificado ausente.

Atualizar certificados de autoridade de certificação raiz para outros clientes, para cenários de fixação de certificado

Para outros usuários cliente PostgreSQL, você pode mesclar dois arquivos de certificado de AUTORIDADE usando o seguinte formato:

-----BEGIN CERTIFICATE-----
(Root CA1: DigiCertGlobalRootCA.crt.pem)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(Root CA2: Microsoft ECC Root Certificate Authority 2017.crt.pem)
-----END CERTIFICATE-----