Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
SE APLICA A: Azure Database for PostgreSQL: Servidor flexible
Importación de certificados de entidad de certificación raíz en el almacén de claves de Java en el cliente, para escenarios de anclaje de certificados
Las aplicaciones Java escritas personalizadas usan un almacén de claves predeterminado, denominado cacerts
, que contiene certificados de entidad de certificación (CA) de confianza. También se conoce a menudo como almacén de confianza de Java. Un archivo de certificados denominado cacerts
reside en el directorio de propiedades de seguridad, java.home\lib\security, donde java.home es el directorio del entorno en tiempo de ejecución (el jre
directorio del SDK o el directorio de nivel superior del entorno en tiempo de ejecución de Java™ 2).
Puede usar las siguientes instrucciones para actualizar los certificados de entidad de certificación raíz del cliente para escenarios de anclaje de certificados de cliente con el servidor flexible de PostgreSQL:
- Compruebe
cacerts
el almacén de claves de Java para ver si ya contiene certificados necesarios. Puede enumerar certificados en el almacén de claves de Java mediante el comando siguiente:
keytool -list -v -keystore ..\lib\security\cacerts > outputfile.txt
Si los certificados necesarios no están presentes en el almacén de claves java en el cliente, como se puede comprobar en la salida, debe continuar con las siguientes instrucciones:
Realice una copia de seguridad del almacén de claves personalizado.
Descargue los certificados y guárdelos localmente donde puede hacer referencia a ellos.
Genere un almacén de certificados de CA combinado con todos los certificados de CA raíz necesarios incluidos. En el ejemplo siguiente se muestra el uso de DefaultJavaSSLFactory para usuarios JDBC de 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
Reemplace el archivo de almacén de claves original por el nuevo generado:
System.setProperty("javax.net.ssl.trustStore","path_to_truststore_file"); System.setProperty("javax.net.ssl.trustStorePassword","password");
Reemplace el archivo PEM de la CA raíz original por el archivo de CA raíz combinado y reinicie la aplicación o el cliente.
Para obtener más información sobre cómo configurar certificados de cliente con el controlador JDBC de PostgreSQL, consulte esta documentación.
Nota
Para importar certificados a los almacenes de certificados del cliente, puede que necesite convertir los archivos de certificado .crt al formato .pem. Puede usar utilidad OpenSSL para realizar estas conversiones de archivos.
Obtención de una lista de certificados de confianza en el Almacén de claves de Java mediante programación
De forma predeterminada, Java almacena los certificados de confianza en un archivo especial denominado cacerts
que se encuentra dentro de la carpeta de instalación de Java en el cliente.
El ejemplo siguiente lee cacerts
primero y lo carga en el 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;
}
La contraseña predeterminada para cacerts
es changeit
, pero debe ser diferente en el cliente real, ya que los administradores recomiendan cambiar la contraseña inmediatamente después de la instalación de Java.
Una vez cargado el objeto KeyStore , podemos usar la clase PKIXParameters para leer los 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());
}
Actualización de certificados de entidad de certificación raíz al usar clientes en Azure App Services para escenarios de anclaje de certificados
Para los servicios de aplicaciones de Azure, al conectarse a un servidor flexible de Azure Database para PostgreSQL, podemos tener dos escenarios posibles para la actualización de certificados de cliente, y depende de cómo estás utilizando SSL con tu aplicación implementada en Azure App Services.
- Los nuevos certificados se agregan a App Service en el nivel de plataforma antes de que se produzcan cambios en el servidor flexible de Azure Database for PostgreSQL. Si usa los certificados SSL incluidos en la plataforma de App Service en la aplicación, no es necesario realizar ninguna acción. Para más información, consulte Incorporación y administración de certificados TLS/SSL en Azure App Service, en la documentación de Azure App Service.
- Si incluye explícitamente la ruta de acceso al archivo de certificado SSL en el código, tendría que descargar el nuevo certificado y actualizar el código para usarlo. Un buen ejemplo de este escenario es cuando usas contenedores personalizados en App Service como se describe en el Tutorial: Configurar un contenedor sidecar para un contenedor personalizado en Azure App Service, en la documentación de Azure App Service.
Actualización de certificados de entidad de certificación raíz al usar clientes en Azure Kubernetes Service (AKS), para escenarios de anclaje de certificados
Si está intentando conectarse a Azure Database for PostgreSQL mediante aplicaciones hospedadas en Azure Kubernetes Services (AKS) y anclar certificados, es similar al acceso desde el entorno host de un cliente dedicado. Consulte los pasos aquí.
Actualización de certificados de entidad de certificación raíz para usuarios de .NET (Npgsql) en Windows, para escenarios de anclaje de certificados
Para los usuarios de .NET (Npgsql) en Windows, al conectarse a los servidores flexibles de Azure Database for PostgreSQL, asegúrese de que las tres Autoridades de Certificación Raíz RSA de Microsoft 2017, DigiCert Global Root G2 y Digicert Global Root CA existan en el Almacén de Certificados de Windows, Entidades de certificación raíz de confianza. Si no existen certificados, importe el certificado que falta.
Actualización de certificados de entidad de certificación raíz para otros clientes, para escenarios de anclaje de certificados
Para otros usuarios clientes de PostgreSQL, puede combinar dos archivos de certificado de autoridad de certificación usando el formato que se muestra a continuación:
-----BEGIN CERTIFICATE-----
(Root CA1: DigiCertGlobalRootCA.crt.pem)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(Root CA2: Microsoft ECC Root Certificate Authority 2017.crt.pem)
-----END CERTIFICATE-----