Aggiornamento delle applicazioni per connettersi alle istanze My SQL DB utilizzando nuovi certificatiSSL/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 My SQL DB utilizzando nuovi certificatiSSL/TLS

A partire dal 13 gennaio 2023, Amazon RDS ha pubblicato nuovi certificati Certificate Authority (CA) per la connessione alle istanze RDS DB tramite 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 può aiutarti a determinare se alcune applicazioni client utilizzanoSSL/TLSper connettersi alle tue istanze DB. In caso affermativo, puoi determinare anche se le applicazioni richiedono la verifica del certificato per la connessione.

Nota

Alcune applicazioni sono configurate per connettersi alle istanze My SQL DB solo se riescono a verificare correttamente il certificato sul server. Per queste applicazioni, è necessario aggiornare gli archivi di trust delle applicazioni client per includere i nuovi certificati CA.

È possibile specificare le seguenti SSL modalità: disabledpreferred, erequired. Quando si utilizza la preferred SSL modalità e il certificato CA non esiste o non è aggiornato, la connessione torna a non essere utilizzata SSL e si connette senza crittografia.

Poiché queste versioni successive utilizzano il SSL protocollo Open, un certificato server scaduto non impedisce il successo delle connessioni a meno che non venga specificata la required SSL modalità.

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 certificatoSSL/TLS. Per ulteriori informazioni sul download, consulta . Per informazioni sull'utilizzo diSSL/TLScon le istanze My SQL DB, consulta. SSL/TLSsupporto per le istanze My SQL DB su Amazon RDS

Determinare se alcune applicazioni si connettono all'istanza My SQL DB utilizzando SSL

Se utilizzi Amazon RDS for My SQL versione 5.7 o 8.0 e lo schema delle prestazioni è abilitato, esegui la seguente query per verificare se le connessioni utilizzanoSSL/. TLS Per informazioni sull'attivazione del Performance Schema, consulta la guida rapida di Performance Schema nella mia SQL documentazione.

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 sia la tua sessione (admin) che un'applicazione connessa mentre webapp1 la utilizzaSSL.

+----+-----------------+------------------+-----------------+ | 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 JDBC i client e I miei SQL clienti richiedono la verifica del certificato per connettersi.

JDBC

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

Quando si utilizza My SQL Connector/J 8.0, una SSL connessione richiede la verifica rispetto al certificato del server DB se le proprietà della connessione sono sslMode impostate su VERIFY_CA oVERIFY_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 utilizzate My SQL Java Connector v5.1.38 o versione successiva oppure My SQL Java Connector v8.0.9 o versione successiva per connettervi ai database, anche se non avete configurato esplicitamente le applicazioni per utilizzareSSL/TLSdurante la connessione ai database, questi driver client utilizzano per impostazione predefinita/. SSL TLS Inoltre, quando usanoSSL/TLS, eseguono una verifica parziale del certificato e non riescono a connettersi se il certificato del server di database è scaduto.

Mio SQL

I seguenti esempi con My SQL Client mostrano due modi per verificare la mia SQL connessione di uno script per determinare se le connessioni riuscite richiedono un certificato valido. Per ulteriori informazioni su tutte le opzioni di connessione con My SQL Client, consulta Configurazione lato client per le connessioni crittografate nella documentazione MySQL.

Quando si utilizza My SQL 5.7 o My SQL 8.0 Client, una SSL connessione richiede la verifica rispetto al certificato CA del server se per l'--ssl-modeopzione specificata VERIFY_CA oVERIFY_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 si utilizza il client My SQL 5.6, una SSL connessione richiede la verifica rispetto al certificato CA del server se si specifica l'--ssl-verify-server-certopzione, 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 SQL Le mie applicazioni, vedere Installazione SSL dei certificati nella SQL documentazione personale.

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 utilizzi il JDBC driver mysql 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_trust_store/MyTruststore.jks -Djavax.net.ssl.trustStorePassword=my_trust_store_password com.companyName.MyApplication
Nota

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

Codice Java di esempio per stabilire connessioni SSL

Il seguente esempio di codice mostra come configurare la SSL connessione che convalida il certificato del server utilizzandoJDBC.

public class MySQLSSLTest { private static final String DB_USER = "username"; private static final String DB_PASSWORD = "password"; // This trust store has only the prod root ca. private static final String TRUST_STORE_FILE_PATH = "file-path-to-trust-store"; private static final String TRUST_STORE_PASS = "trust-store-password"; public static void test(String[] args) throws Exception { Class.forName("com.mysql.jdbc.Driver"); System.setProperty("javax.net.ssl.trustStore", TRUST_STORE_FILE_PATH); System.setProperty("javax.net.ssl.trustStorePassword", TRUST_STORE_PASS); Properties properties = new Properties(); properties.setProperty("sslMode", "VERIFY_IDENTITY"); properties.put("user", DB_USER); properties.put("password", DB_PASSWORD); Connection connection = null; Statement stmt = null; ResultSet rs = null; try { connection = DriverManager.getConnection("jdbc:mysql://mydatabase.123456789012.us-east-1.rds.amazonaws.com:3306",properties); stmt = connection.createStatement(); rs=stmt.executeQuery("SELECT 1 from dual"); } finally { if (rs != null) { try { rs.close(); } catch (SQLException e) { } } if (stmt != null) { try { stmt.close(); } catch (SQLException e) { } } if (connection != null) { try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } } } return; } }
Importante

Dopo aver stabilito che le connessioni al database utilizzanoSSL/TLSe 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 o il cluster di database.

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