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 la connessione ai cluster database Aurora MySQL utilizzando nuovi certificati TLS
A partire dal 13 gennaio 2023, sono stati pubblicati da Amazon RDS nuovi certificati dell'autorità di certificazione (CA) per la connessione ai cluster database Aurora utilizzando Transport Layer Security (TLS). Di seguito sono disponibili le informazioni sull'aggiornamento delle applicazioni per utilizzare i nuovi certificati.
Le informazioni in questo argomento possono aiutarti a stabilire se le applicazioni client utilizzano TLS per connettersi ai cluster database. In caso affermativo, puoi determinare anche se le applicazioni richiedono la verifica del certificato per la connessione.
Nota
Alcune applicazioni sono configurate per connettersi ai cluster DB Aurora MySQL solo se sono in grado di verificare il certificato del server.
Per queste applicazioni, è necessario aggiornare gli archivi di trust delle applicazioni client per includere i nuovi certificati CA.
Dopo aver aggiornato i certificati CA negli archivi attendibilità delle applicazioni client, puoi ruotare i certificati nei cluster DB. 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 certificatoSSL/TLS. Per ulteriori informazioni sul download, consulta . Per informazioni sull'utilizzo di TLS con i cluster database Aurora MySQL, consulta Connessioni TLS ai cluster Aurora MySQL DB.
Argomenti
Determinazione se un'applicazione si connette al cluster databse Aurora MySQL utilizzando SSL
Se utilizzi Aurora MySQL versione 2 (compatibile con MySQL 5.7) e lo schema delle prestazioni è abilitato, esegui la query indicata di seguito per verificare se le connessioni utilizzano TLS. Per informazioni sull'abilitazione dello schema delle prestazioni, consulta l'argomento relativo alla guida rapida per lo schema delle prestazioni
mysql> SELECT id, user, host, connection_type FROM performance_schema.threads pst INNER JOIN information_schema.processlist isp ON pst.processlist_id = isp.id;
In questo output di esempio, puoi vedere che la tua sessione (admin
) e un'applicazione collegata come webapp1
stanno entrambe usando TLS.
+----+-----------------+------------------+-----------------+ | id | user | host | connection_type | +----+-----------------+------------------+-----------------+ | 8 | admin | 10.0.4.249:42590 | SSL/TLS | | 4 | event_scheduler | localhost | NULL | | 10 | webapp1 | 159.28.1.1:42189 | SSL/TLS | +----+-----------------+------------------+-----------------+ 3 rows in set (0.00 sec)
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 MySQL Connector/J 8.0 mostra un modo per verificare le proprietà della 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
Quando utilizzi MySQL Connector/J 8.0, la connessione TLS richiede la verifica del certificato CA del server se nelle proprietà di connessione sslMode
è impostato su VERIFY_CA
o VERIFY_IDENTITY
, come nell'esempio seguente.
Properties properties = new Properties(); properties.setProperty("sslMode", "VERIFY_IDENTITY"); properties.put("user", DB_USER); properties.put("password", DB_PASSWORD);
Nota
Se si utilizza MySQL Java Connector v5.1.38 o versione successiva o MySQL Java Connector v8.0.9 o versione successiva per connettersi ai database, anche se non sono state configurate esplicitamente le applicazioni per l'utilizzo di TLS durante la connessione ai database, questi driver client utilizzano automaticamente TLS. Inoltre, quando utilizzano TLS, eseguono la verifica parziale del certificato e non riescono a connettersi se il certificato del server di database è scaduto.
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
Quando utilizzi il client MySQL 5.7 o MySQL 8.0, la connessione TLS 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 dell'archivio attendibilità per le applicazioni MySQL, consulta l'argomento relativo all'installazione dei certificati SSL
Nota
Quando aggiorni l'archivio di trust puoi conservare i certificati meno recenti oltre ad aggiungere i nuovi certificati.
Aggiornare l'archivio di trust delle applicazioni per JDBC
Puoi aggiornare l'archivio di trust delle applicazioni che utilizzano JDBC per le connessioni TLS.
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.
Se utilizzi il driver mysql JDBC in un'applicazione, imposta le seguenti proprietà nell'applicazione.
System.setProperty("javax.net.ssl.trustStore",
certs
); System.setProperty("javax.net.ssl.trustStorePassword", "password
");
Nota
Specifica una password diversa dal prompt mostrato qui come best practice per la sicurezza.
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
Codice Java di esempio per stabilire connessioni TLS
L'esempio di codice seguente mostra come configurare la connessione SSL che convalida il certificato del server utilizzando JDBC.
public class MySQLSSLTest { 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 test(String[] args) throws Exception { Class.forName("com.mysql.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.setProperty("sslMode", "VERIFY_IDENTITY"); properties.put("user", DB_USER); properties.put("password", DB_PASSWORD); Connection connection = DriverManager.getConnection("jdbc:mysql://jagdeeps-ssl-test.cni62e2e7kwh.us-east-1.rds.amazonaws.com:3306",properties); Statement stmt=connection.createStatement(); ResultSet rs=stmt.executeQuery("SELECT 1 from dual"); return; } }
Importante
Dopo aver stabilito che le connessioni al database utilizzano TLS e aver aggiornato l'archivio attendibile dell'applicazione, è possibile aggiornare il database per utilizzare i certificati rds-ca-rsa 2048-g1. Per istruzioni, consulta la fase 3 in Aggiornamento del certificato CA modificando l'istanza il cluster di database.