[RISOLTO] Configurazione MySQL Replication e connessione ssl

di il
7 risposte

[RISOLTO] Configurazione MySQL Replication e connessione ssl

Salve amici,
nel replicare su due VPS Debian Jessie due database (master e slave) di server di posta sto incontrando alcune difficoltà nel configurare MySQL Replication con connessione SSL.

Ho seguito questa guida e una volta configurati gli ambienti mi rendo conto che la connessione mysql tra i due server non si stabilisce.
Allora ho provato ad eseguire un semplice login in locale con l'utente appena creato sul master e anche da locale non riesco a connettermi.
La mia esperienza in ambito MySQL lascia sicuramente a desiderare, per questo vi chiedo un aiuto per cercare di districarmi e andarne a fondo e capire dove ho sbagliato.


Per creare l'utente "replication" ho eseguito questa query:
GRANT REPLICATION SLAVE ON *.* TO 'NOME-UTENTE-REPLICATION'@'%' IDENTIFIED BY 'PASSWORD-UTENTE-REPLICATION' REQUIRE SSL;
Per autenticarmi in locale questo comando:
mysql -u "NOME-UTENTE-REPLICATION" -p

Enter password: 
ERROR 1045 (28000): Access denied for user 'NOME-UTENTE-REPLICATION'@'localhost' (using password: YES)


Uno dei passaggi che non ho compreso è: perchè nonostante io abbia abilitato ssl da /etc/mysql/my.cnf quando eseguo la query per mostrarmi se SSL è attivo
ssl
ssl-ca=/etc/mysql/cert/ca-cert.pem
ssl-cert=/etc/mysql/cert/server-cert.pem
ssl-key=/etc/mysql/cert/server-key.pem
ottengo sempre verdetto DISABLED:
show variables like '%ssl%';
+---------------+----------------------------------------+
| Variable_name | Value                                  |
+---------------+----------------------------------------+
| have_openssl  | DISABLED                               |
| have_ssl      | DISABLED                               |
| ssl_ca        | /etc/mysql/certificati/ca-cert.pem     |
| ssl_capath    |                                        |
| ssl_cert      | /etc/mysql/certificati/server-cert.pem |
| ssl_cipher    |                                        |
| ssl_key       | /etc/mysql/certificati/server-key.pem  |
+---------------+----------------------------------------+

Per creare le chiavi sul master ho usato questi comandi:

CA certificate
openssl genrsa 4096 > ca-key.pem
openssl req -new -x509 -nodes -days 1000 -key ca-key.pem > ca-cert.pem
server certificate:

openssl req -newkey rsa:4096 -days 1000 -nodes -keyout server-key.pem > server-req.pem
openssl x509 -req -in server-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem
client certificate:

openssl req -newkey rsa:4096 -days 1000 -nodes -keyout client-key.pem > client-req.pem
openssl x509 -req -in client-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem

Spero di non aver messo troppa carne al fuoco, e vi ringrazio per la gentile attenzione!

Davide

7 Risposte

  • Re: [RISOLTO] Configurazione MySQL Replication e connessione ssl

    In effetti stai facendo un po'... di bordello.
    cominciamo col dire che il modo "normale" è quello di fare un tunnel ssh, così da poter attivare - per inciso - la compressione direttamente sul canale.

    tornando alla domanda: non so che versione di mysql usi, l'ho abbandonato da anni.
    Direi che il tuo primo obiettivo è abilitare openssl (o ssl)
    Welcome to the MariaDB monitor. Commands end with ; or \g.
    Your MariaDB connection id is 56301
    Server version: 10.1.14-MariaDB FreeBSD Ports

    Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

    MariaDB [(none)]> show variables like '%ssl%';
    +---------------------+------------------------------------+
    | Variable_name | Value |
    +---------------------+------------------------------------+
    | have_openssl | YES |
    | have_ssl | DISABLED |
    | ssl_ca | |
    | ssl_capath | |
    | ssl_cert | |
    | ssl_cipher | |
    | ssl_crl | |
    | ssl_crlpath | |
    | ssl_key | |
    | version_ssl_library | OpenSSL 1.0.1s-freebsd 1 Mar 2016 |
    +---------------------+------------------------------------+
    10 rows in set (0.00 sec)

    MariaDB [(none)]>
  • Re: [RISOLTO] Configurazione MySQL Replication e connessione ssl

    PS intendevo "sei sicuro che il mysql che usi sia stato compilato con SSL (in realtà TLS) ?
    Apparentemente SI' perchè c'è scritto DISABLED.
    Se non ricordo male quando è compilato "senza TLS" c'è scritto proprio NO.
    Prova ad avviare manualmente mysqld con --ssl (qualora il problema fosse il tuo my.cnf)
    Infine puoi toglierti il dubbio facendo un ldd di mysqld (e magari greppando ssl)
  • Re: [RISOLTO] Configurazione MySQL Replication e connessione ssl

    @+m2+ sì è come dici tu: "SI' perchè c'è scritto DISABLED".

    nel tentativo di analisi del problema ho fatto anche un "leggero upgrade di MySQL (e tra l'altro non ripartiva più per un )

    Devi sapere che sull'altra VPS (slave e stesso SO) la stessa procedura va liscia come l'olio..

    Allora ho provato a commentare uno ad uno l'elenco dei certificati del master e finalmente realizzo che è un problema legato ai certificati:


    mysql> show variables like '%ssl%';
    +---------------+------------------------------------+
    | Variable_name | Value                              |
    +---------------+------------------------------------+
    | have_openssl  | YES                                |
    | have_ssl      | YES                                |
    | ssl_ca        | /etc/mysql/cert/ca-cert.pem        |
    | ssl_capath    |                                    |
    | ssl_cert      |                                    |
    | ssl_cipher    |                                    |
    | ssl_key       |                                    |
    +---------------+------------------------------------+
    questo significa che qualcosa non gli va bene nei certificati. Io li ho realizzati da 4096bit e non vorrei fosse quello, adesso provo e aggiorno..

    Grazie dell'aiuto!
  • Re: [RISOLTO] Configurazione MySQL Replication e connessione ssl

    ..infatti, ricreandoli a 2048bit (con procedura indicata da documentazione ufficiale MySQL) va a buon fine l'attivazione:

    +---------------+----------------------------------------+
    | Variable_name | Value                                  |
    +---------------+----------------------------------------+
    | have_openssl  | YES                                    |
    | have_ssl      | YES                                    |
    | ssl_ca        | /etc/mysql/cert/ca.pem                 |
    | ssl_capath    |                                        |
    | ssl_cert      | /etc/mysql/cert/server-cert.pem        |
    | ssl_cipher    |                                        |
    | ssl_key       | /etc/mysql/cert/server-key.pem         |
    +---------------+----------------------------------------+
    7 rows in set (0.00 sec)
    Ho provato anche a 4096bit ma non li accetta.. boh!?

    Adesso riprovo le connessioni..
  • Re: [RISOLTO] Configurazione MySQL Replication e connessione ssl

    Erano le chiavi, ora la "replicazione" funziona perfettamente!
    Certo che non supportare i 4096bit mi sembra grave.. va beh che si tratta della versione MySQL 5.5.x

    Grazie ancora

    Davide
  • Re: [RISOLTO] Configurazione MySQL Replication e connessione ssl

    ... come detto essenzialmente non si fa in quel modo: perdi la compressione.
    Si va di tunnel ssh.
    Comunque tutto è bene quello che non finisce a schifio.
  • Re: [RISOLTO] Configurazione MySQL Replication e connessione ssl

    È stata dura, lo ammetto! Ho trovato tutorial con indicazioni sbagliate e non parliamo della documentazione MySQl assolutamente ridondante dove non serve e carente dove invece sarebbe utile e organizzata anche male. Mi sono pure imbattuto in un paio di bug (mysql) che mi hanno fatto perdere l'orizzonte ad un certo punto..

    +m2+ ha scritto:


    Comunque tutto è bene quello che non finisce a schifio
    Sì, certamente!
    ..io ad ogni modo (forse per il fatto di essere di un altra generazione) preferisco:

    "https://youtu.be/C8__3Q85_l" Tutto è bene ciò che finisce bene ..e l'ultimo chiuda la porta!

    Grazie ancora
Devi accedere o registrarti per scrivere nel forum
7 risposte