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à.
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à: disabled
preferred
, 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.
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, consultaSSL/TLSsupporto per le istanze My SQL DB su Amazon RDS.
Argomenti
Determinare se alcune applicazioni si connettono all'istanza My SQL DB utilizzando SSL
Se utilizzi Amazon RDS for My SQL versione 5.7, 8.0 o 8.4 e lo schema delle prestazioni è abilitato, esegui la seguente query per verificare se le connessioni utilizzano/. SSL TLS Per informazioni sull'attivazione del Performance Schema, consulta la guida rapida di Performance Schema
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
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 utilizzi My SQL Java Connector v5.1.38 o versione successiva oppure My SQL Java Connector v8.0.9 o versione successiva per connetterti ai tuoi database, anche se non hai configurato esplicitamente le tue applicazioni per l'usoSSL/TLS when connecting to your databases, these client drivers default to using SSL/TLS. In addition, when using SSL/TLS, eseguono una verifica parziale del certificato e non riescono a connettersi se il certificato del server del 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
Quando si utilizza My SQL Client versione 5.7 e successive, una SSL connessione richiede la verifica rispetto al certificato CA del server se per l'--ssl-mode
opzione 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
Aggiornare l'archivio di trust delle applicazioni
Per informazioni sull'aggiornamento del trust store per SQL le mie applicazioni, vedere Installazione SSL dei certificati
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.