Crittografia delle connessioni client alle istanze database MySQL con 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à.

Crittografia delle connessioni client alle istanze database MySQL con SSL/TLS

Secure Sockets Layer (SSL) è un protocollo standard del settore utilizzato per proteggere connessioni di rete tra client e server. Dopo SSL versione 3.0, il nome è stato modificato in Transport Layer Security (TLS). Amazon RDS supporta la crittografia SSL/TLS per le istanze database MySQL. Utilizzando SSL/TLS, puoi crittografare una connessione tra il client dell'applicazione e l'istanza database MariaDB. Il supporto SSL/TLS è disponibile in tutte le Regioni AWS per MySQL.

Utilizzo di SSL/TLS con un'istanza database MySQL

Amazon RDS crea un certificato SSL/TLS e installa il certificato nell'istanza database quando Amazon RDS effettua il provisioning dell'istanza. Questi certificati sono firmati da un'autorità di certificazione. Il certificato SSL/TLS include l'endpoint dell'istanza database come nome comune (CN) per il certificato SSL/TLS per la protezione contro attacchi di spoofing.

Un certificato SSL/TLS creato da Amazon RDS è l'entità root attendibile e funziona nella maggior parte dei casi, ma potrebbe non funzionare se l'applicazione non accetta catene di certificati. Se l'applicazione non accetta le catene di certificati, potrebbe essere necessario utilizzare un certificato intermedio per la connessione alla Regione AWS. Ad esempio, devi utilizzare un certificato intermedio per connetterti alle Regioni AWS GovCloud (US) tramite SSL/TLS.

Per ulteriori informazioni sul download dei certificati, consultare . Per ulteriori informazioni sull'uso di SSL/TLS con MySQL, consulta Aggiornamento delle applicazioni per la connessione a istanze database MySQL mediante nuovi certificati SSL/TLS.

MariaDB utilizza OpenSSL per connessioni sicure. Amazon RDS per MySQL supporta Transport Layer Security (TLS) versioni 1.0, 1.1, 1.2 e 1.3. Il supporto TLS dipende dalla versione MySQL. La tabella seguente mostra il supporto TLS per le versioni di MySQL.

MySQL versione TLS 1.0 TLS 1.1 TLS 1.2 TLS 1.3

MySQL 8.0

Non supportato

Non supportato

Supportato

Supportato

MySQL 5.7

Supportato

Supportato

Supportato

Non supportato

Puoi richiedere le connessioni SSL/TLS per account utente specifici. Ad esempio, in base alla versione di MySQL, puoi utilizzare una delle seguenti istruzioni per richiedere connessioni SSL/TLS per l'account utente encrypted_user.

A tale scopo, utilizza la dichiarazione seguente.

ALTER USER 'encrypted_user'@'%' REQUIRE SSL;

Per ulteriori informazioni sulle connessioni SSL/TLS con MySQL, consulta Using encrypted connections nella documentazione di MySQL.

Richiesta di SSL/TLS per tutte le connessioni a un'istanza database MySQL

Puoi far sì che tutte le connessioni utente all'istanza database MySQL utilizzino SSL/TLS mediante il parametro require_secure_transport. Per impostazione predefinita, il parametro require_secure_transport è impostato su OFF. Puoi impostare il parametro require_secure_transport su ON per richiedere la crittografia SSL/TLS per le connessioni all'istanza database.

Puoi impostare il valore del parametro require_secure_transport aggiornando il gruppo di parametri database per l'istanza database. Non è necessario riavviare l'istanza database affinché la modifica abbia effetto.

Quando il parametro require_secure_transport è impostato su ON per un'istanza database, un client di database può connettersi a essa se è in grado di stabilire una connessione crittografata. In caso contrario, viene restituito al client un messaggio di errore simile al seguente:

MySQL Error 3159 (HY000): Connections using insecure transport are prohibited while --require_secure_transport=ON.

Per informazioni sull'estensione dei parametri consulta Modifica di parametri in un gruppo di parametri del database.

Per ulteriori informazioni sul parametro require_secure_transport, consulta la documentazione di MySQL.

Connessione dal client a riga di comando MySQL con SSL/TLS (crittografato)

I parametri del programma client mysql sono leggermente diversi se si utilizza la versione MySQL 5.7, la versione MySQL 8.0 o la versione MariaDB.

Per scoprire quale versione è disponibile, esegui il comando mysql con l’opzione --version. Nell'esempio seguente, nell'output viene mostrato che il programma client proviene da MariaDB.

$ mysql --version mysql Ver 15.1 Distrib 10.5.15-MariaDB, for osx10.15 (x86_64) using readline 5.1

La maggior parte delle distribuzioni Linux, come Amazon Linux, CentOS, SUSE e Debian, hanno sostituito MySQL con MariaDB e la versione mysql presente proviene da MariaDB.

Per eseguire la connessione all'istanza database utilizzando SSL/TLS, segui questi passaggi:

Per eseguire la connessione a un'istanza database con SSL/TLS utilizzando il client a riga di comando MySQL
  1. Scarica un certificato root che funziona per tutte le Regioni AWS.

    Per ulteriori informazioni sul download dei certificati, consultare .

  2. Per stabilire la connessione a un'istanza database con la crittografia SSL/TLS, utilizza il client a riga di comando MySQL Per il parametro -h, sostituisci il nome DNS (endpoint) per l'istanza database. Per il parametro --ssl-ca, sostituisci il nome file del certificato SSL/TLS. Per il parametro -P, sostituisci la porta per l'istanza database. Per il parametro -u, sostituisci il nome utente di un utente di database valido, ad esempio l'utente master. Immetti la password dell'utente master quando richiesto.

    L'esempio seguente mostra come avviare il client utilizzando il parametro --ssl-ca per il client MySQL 5.7 o versioni successive.

    mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com --ssl-ca=global-bundle.pem --ssl-mode=REQUIRED -P 3306 -u myadmin -p

    Per richiedere alla connessione SSL/TLS di verificare l'endpoint dell'istanza database confrontandolo con l'endpoint nel certificato SSL/TLS, immetti il seguente comando:

    mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com --ssl-ca=global-bundle.pem --ssl-mode=VERIFY_IDENTITY -P 3306 -u myadmin -p

    L'esempio seguente mostra come avviare il client utilizzando il parametro --ssl-ca con il client MariaDB.

    mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com --ssl-ca=global-bundle.pem --ssl -P 3306 -u myadmin -p
  3. Immetti la password dell'utente master quando richiesto.

Verrà visualizzato un output simile al seguente.

Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9738 Server version: 8.0.28 Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>