Aggiornamento delle applicazioni per connettersi alle istanze di MariadB utilizzando nuovi certificati SSL/TLS - Amazon Relational Database Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Aggiornamento delle applicazioni per connettersi alle istanze di MariadB utilizzando nuovi certificati SSL/TLS

A partire dal 13 gennaio 2023, Amazon RDS ha pubblicato nuovi certificati dell'autorità di certificazione (CA) per la connessione alle istanze database RDS utilizzando Secure Socket Layer o Transport Layer Security (SSL/TLS). Di seguito sono disponibili le informazioni sull'aggiornamento delle applicazioni per utilizzare i nuovi certificati.

Questo argomento aiuta a determinare se le applicazioni richiedono la verifica dei certificati per la connessione delle istanze database.

Nota

Alcune applicazioni sono configurate per connettersi a MariaDB sono se possono correttamente verificare il certificato sul server. Per queste applicazioni, è necessario aggiornare gli archivi di trust delle applicazioni client per includere i nuovi certificati CA.

Puoi specificare le seguenti modalità SSL: disabled, preferred e required. Quando si utilizza la modalità preferred SSL e il certificato CA non esiste o non è aggiornato, la connessione non utilizza SSL e continua a connettersi correttamente.

Consigliamo di evitare la modalità preferred. In modalità preferred, se la connessione rileva un certificato non valido, interrompe l'utilizzo della crittografia e procede in modo non crittografato.

Dopo aver aggiornato i certificati CA negli archivi di trust delle applicazioni client, puoi ruotare i certificati nelle istanze database. Consigliamo vivamente di testare queste procedure in un ambiente di sviluppo o di gestione temporanea prima di implementarle negli ambienti di produzione.

Per ulteriori informazioni sulla rotazione dei certificati, consulta Rotazione del certificato SSL/TLS. Per ulteriori informazioni sul download, consulta . Per informazioni sull'utilizzo SSL/TLS con le istanze DB MariadB, consulta. Supporto di SSL/TLS per le istanze database MariaDB in Amazon RDS

Determinare se un client richiede la verifica del certificato per la connessione

Puoi verificare se i client JDBC e MySQL richiedono la verifica del certificato per la connessione.

JDBC

L'esempio seguente con Connector/J MySQL 8.0 mostra un modo per verificare le proprietà di connessione JDBC di un'applicazione per determinare se le connessioni riuscite richiedono un certificato valido. Per ulteriori informazioni su tutte le opzioni di connessione JDBC per MySQL, consulta l'argomento relativo alle proprietà di configurazione nella documentazione di MySQL.

Quando si utilizza Connector/J MySQL 8.0, una connessione SSL richiede la verifica rispetto al certificato CA del server se le proprietà della connessione sslMode sono impostate su VERIFY_IDENTITY o, come nell'VERIFY_CAesempio seguente.

Properties properties = new Properties(); properties.setProperty("sslMode", "VERIFY_IDENTITY"); properties.put("user", DB_USER); properties.put("password", DB_PASSWORD);
Nota

Se utilizzi MySQL Java Connector v5.1.38 o successivo oppure MySQL Java Connector v8.0.9 o successivo per connetterti ai tuoi database, anche se non hai configurato esplicitamente le tue applicazioni da SSL/TLS utilizzare per la connessione ai database, questi driver client vengono utilizzati per impostazione predefinita, eseguono una verifica parziale del certificato e non riescono a connettersi se il certificato del server del database è scaduto. SSL/TLS. In addition, when using SSL/TLS

Specifica una password diversa dal prompt mostrato qui come best practice per la sicurezza.

MySQL

I seguenti esempi con il client MySQL mostrano due modi per verificare la connessione MySQL di uno script per determinare se le connessioni riuscite richiedono un certificato valido. Per ulteriori informazioni su tutte le opzioni di connessione con il client MySQL, consulta l'argomento relativo alla configurazione lato client delle connessioni crittografate nella documentazione di MySQL.

Quando utilizzi il client MySQL 5.7 o MySQL 8.0, la connessione SSL richiede la verifica del certificato CA del server se per l'opzione --ssl-mode viene specificato VERIFY_CA o VERIFY_IDENTITY, come nell'esempio seguente.

mysql -h mysql-database.rds.amazonaws.com -uadmin -ppassword --ssl-ca=/tmp/ssl-cert.pem --ssl-mode=VERIFY_CA

Quando utilizzi il client MySQL 5.6, la connessione SSL richiede la verifica del certificato CA del server se viene specificata l'opzione --ssl-verify-server-cert, come nell'esempio seguente.

mysql -h mysql-database.rds.amazonaws.com -uadmin -ppassword --ssl-ca=/tmp/ssl-cert.pem --ssl-verify-server-cert

Aggiornare l'archivio di trust delle applicazioni

Per informazioni sull'aggiornamento del trust store per le applicazioni MySQL, consulta Using TLS/SSL with MariaDB Connector/J nella documentazione di MariaDB.

Per ulteriori informazioni sul download del certificato root, consulta .

Per gli script di esempio che importano i certificati, consulta Script di esempio per l'importazione di certificati nel tuo archivio di trust.

Nota

Quando aggiorni l'archivio di trust puoi conservare i certificati meno recenti oltre ad aggiungere i nuovi certificati.

Se stai utilizzando il driver JDBC Connector/J MariadB in un'applicazione, imposta le seguenti proprietà nell'applicazione.

System.setProperty("javax.net.ssl.trustStore", certs); System.setProperty("javax.net.ssl.trustStorePassword", "password");

Quando avvii l'applicazione, imposta le seguenti proprietà.

java -Djavax.net.ssl.trustStore=/path_to_truststore/MyTruststore.jks -Djavax.net.ssl.trustStorePassword=my_truststore_password com.companyName.MyApplication
Nota

Specifica password diverse dalle istruzioni mostrate qui come best practice di sicurezza.

Codice Java di esempio per stabilire connessioni SSL

L'esempio di codice seguente mostra come impostare la connessione SSL utilizzando JDBC.

private static final String DB_USER = "admin"; private static final String DB_USER = "user name"; private static final String DB_PASSWORD = "password"; // This key store has only the prod root ca. private static final String KEY_STORE_FILE_PATH = "file-path-to-keystore"; private static final String KEY_STORE_PASS = "keystore-password"; public static void main(String[] args) throws Exception { Class.forName("org.mariadb.jdbc.Driver"); System.setProperty("javax.net.ssl.trustStore", KEY_STORE_FILE_PATH); System.setProperty("javax.net.ssl.trustStorePassword", KEY_STORE_PASS); Properties properties = new Properties(); properties.put("user", DB_USER); properties.put("password", DB_PASSWORD); Connection connection = DriverManager.getConnection("jdbc:mysql://ssl-mariadb-public.cni62e2e7kwh.us-east-1.rds.amazonaws.com:3306?useSSL=true",properties); Statement stmt=connection.createStatement(); ResultSet rs=stmt.executeQuery("SELECT 1 from dual"); return; }
Importante

Dopo aver stabilito che le connessioni al database utilizzano SSL/TLS e aggiornato l'archivio di fiducia dell'applicazione, è possibile aggiornare il database per utilizzare i certificati 2048-g1. rds-ca-rsa Per istruzioni, consulta la fase 3 in Aggiornamento del certificato CA modificando l’istanza database o il cluster di database.

Specifica una password diversa dal prompt mostrato qui come best practice per la sicurezza.