Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it L'avatar di iaco74
    Registrato dal
    Sep 2002
    Messaggi
    682

    MySql 5.1 conf SSL Chiarimenti

    Ciao a tutti,

    Sto testando il supporto di mysql sulle potenzialita delle connessioni via ssl.

    Ho configurato il tutto è sembrerebbe funzionare.

    Credo però che ci siano dei concetti che non mi sono chiari, sul funzionamento del protocollo.

    Adesso che il server è configurato con il supporto ssl e che esiste un utente di mysql con specificato che dovrà avere una connessione SSL (REQUIRED SSL) quali credenziali saranno richieste al client ?

    Il dubbio è proprio questo;

    Io immaginavo che solo i client con il certificato client installato potessero accedere a quel server, invece io riesco a connettermi a quel server con quell 'utente specificando solamente ssl nel tipo di connessioni.

    Mi immaginavo che questo sistema funzionasse un po come con il conto corrente on-line; Se non hai il certificato installato nel browser non puoi accedere a quella determinata risorsa.

    Qualcuno può fare chiarezza ?

    Grazie , ciao
    IACO

  2. #2
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    devi creare l'utente con l'opzione require X509 o require ssl/issuer/subject, etc

  3. #3
    Utente di HTML.it L'avatar di iaco74
    Registrato dal
    Sep 2002
    Messaggi
    682
    Ciao,

    grazie per la risposta ....

    Sapresti indicarmi una risorsa da leggere in merito ?

    I certificati creati con openssl andranno bene anche per questo tipo di scenario ?

    IACO

  4. #4
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Direi che potresti cominciare leggendo il manuale.. http://dev.mysql.com/doc/refman/5.1/...nnections.html

    Per quanto riguarda i certificati, beh, lo scenario e' x509, quindi generali con openssl, microsoft ca, ndspki, lotus domino o quello che ti pare, basta scegliere un pki compatibile con x509.

    a dire il vero, dovrebbero andare anche i pfx, ma per cominciare lasciali stare e non complicarti la vita. Vai tranquillo con ssl/x509

  5. #5
    Utente di HTML.it L'avatar di iaco74
    Registrato dal
    Sep 2002
    Messaggi
    682
    Ciao,

    grazie di nuovo, effettivamente queste cose ci sono scritte le stavo leggendo proprio adesso.

    Per i certificati a quanto ho capito vanno bene lo stesso.

    Durante la definizione dei privilegi si deve omettere require ssl capito il perchè.

    Non mi è chiaro se posso abbinare comunque la richiesta del certificato al nome utente e password oppure no.

    Non mi sembra di vedere parlare di questo nella guida.

    Sai darmi indicazioni su questo ?
    IACO

  6. #6
    Utente di HTML.it L'avatar di iaco74
    Registrato dal
    Sep 2002
    Messaggi
    682
    Certo ho letto l'esempio troppo velocemente. (sono abituato a vedere IDENTIFIED BY in fondo invece era alla seconda riga )

    Grazie mille
    IACO

  7. #7
    Utente di HTML.it L'avatar di iaco74
    Registrato dal
    Sep 2002
    Messaggi
    682
    Ciao,

    Ho capito il meccanismo per creare l'utente nei vari modi dando i privilegi desiderati.

    se faccio il GRANT di un utente con solo require x509 ok riesco a connettermi da localhost (uso mysql a riga di comando come client per i test)

    Se specifico REQUIRE ISSUER NEL GRANT non riesco più a connettermi.

    e qui mi sorge il dubbio: nel require issuer specifico i dati del CA cerificate giusto ? (non quelli del server)

    quindi

    Codice PHP:
    GRANT ALL PRIVILEGES ON *.* TO 'mioutente'@'%' IDENTIFIED BY 'miapass' REQUIRE ISSUER
    '/C=IT/ST=provincia/L=localita/O=miaorganizzazione/CN=mionome/Email=email@domain.com'
    Presupponendo che i dati del CA CERTIFICATE erano questi

    Country Name:IT
    State or Province Namerovincia
    Localitiy Name: localita
    Organization Name: miaorganizzazione
    Organization Unit Name: web
    Common Name: mionome
    Email adress: email@domain.com

    Altro dubbio:

    nel file di conf di mysql (my.ini in window)

    Ho letto un po ma senza trovare certezze, devo specificare i certificati nella sezione [client] [mysqld] e anche nella sezione [mysql] ?

    Riporto my.ini di esempio

    Codice PHP:
    [client]

    port=3306

    # added ssl  support
    ssl-key=C:/Programmi/MySQL/MySQL Server 5.1/cert/client-key.pem
    ssl
    -cert=C:/Programmi/MySQL/MySQL Server 5.1/cert/client-cert.pem
    ssl
    -ca=C:/Programmi/MySQL/MySQL Server 5.1/cert/ca-cert.pem

    [mysql]

    default-
    character-set=utf8
    ssl
    -key=C:/Programmi/MySQL/MySQL Server 5.1/cert/server-key.pem
    ssl
    -cert=C:/Programmi/MySQL/MySQL Server 5.1/cert/server-cert.pem
    ssl
    -ca=C:/Programmi/MySQL/MySQL Server 5.1/cert/ca-cert.pem

    [mysqld]

    # The TCP/IP Port the MySQL Server will listen on
    port=3306

    # added  ssl support
    ssl-key=C:/Programmi/MySQL/MySQL Server 5.1/cert/server-key.pem
    ssl
    -cert=C:/Programmi/MySQL/MySQL Server 5.1/cert/server-cert.pem
    ssl
    -ca=C:/Programmi/MySQL/MySQL Server 5.1/cert/ca-cert.pem 

    Ciao
    IACO

  8. #8
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Originariamente inviato da iaco74
    Ciao,

    Ho capito il meccanismo per creare l'utente nei vari modi dando i privilegi desiderati.

    se faccio il GRANT di un utente con solo require x509 ok riesco a connettermi da localhost (uso mysql a riga di comando come client per i test)

    Se specifico REQUIRE ISSUER NEL GRANT non riesco più a connettermi.

    e qui mi sorge il dubbio: nel require issuer specifico i dati del CA cerificate giusto ? (non quelli del server)

    quindi

    Codice PHP:
    GRANT ALL PRIVILEGES ON *.* TO 'mioutente'@'%' IDENTIFIED BY 'miapass' REQUIRE ISSUER
    '/C=IT/ST=provincia/L=localita/O=miaorganizzazione/CN=mionome/Email=email@domain.com'
    Presupponendo che i dati del CA CERTIFICATE erano questi

    Country Name:IT
    State or Province Namerovincia
    Localitiy Name: localita
    Organization Name: miaorganizzazione
    Organization Unit Name: web
    Common Name: mionome
    Email adress: email@domain.com
    Questi non sembrano i dati del CA Issuer, sembrano i dati del Subject.. a meno che tu non abbia fatto un self signed con dati uguali.
    Dovresti fare un
    openssl x509 -text -in tuo_certificato.pem | grep Issuer | cut -d':' -f2 | sed -e 's/, /\//g'
    per avere la stringa giusta. E se e' veramente un self signed, ricordati che i CN del server e del client NON devono coincidere, altrimenti succede un naming collision con risultati orribili.

    Poi si, ovviamente si tratta dell'issuer del certificato del client.

    Altro dubbio:

    nel file di conf di mysql (my.ini in window)

    Ho letto un po ma senza trovare certezze, devo specificare i certificati nella sezione [client] [mysqld] e anche nella sezione [mysql] ?

    Riporto my.ini di esempio

    Codice PHP:
    [client]

    port=3306

    # added ssl  support
    ssl-key=C:/Programmi/MySQL/MySQL Server 5.1/cert/client-key.pem
    ssl
    -cert=C:/Programmi/MySQL/MySQL Server 5.1/cert/client-cert.pem
    ssl
    -ca=C:/Programmi/MySQL/MySQL Server 5.1/cert/ca-cert.pem

    [mysql]

    default-
    character-set=utf8
    ssl
    -key=C:/Programmi/MySQL/MySQL Server 5.1/cert/server-key.pem
    ssl
    -cert=C:/Programmi/MySQL/MySQL Server 5.1/cert/server-cert.pem
    ssl
    -ca=C:/Programmi/MySQL/MySQL Server 5.1/cert/ca-cert.pem

    [mysqld]

    # The TCP/IP Port the MySQL Server will listen on
    port=3306

    # added  ssl support
    ssl-key=C:/Programmi/MySQL/MySQL Server 5.1/cert/server-key.pem
    ssl
    -cert=C:/Programmi/MySQL/MySQL Server 5.1/cert/server-cert.pem
    ssl
    -ca=C:/Programmi/MySQL/MySQL Server 5.1/cert/ca-cert.pem 

    Ciao
    [mysqld] e' per il server [mysql] e' per il client mysql, [client] e' per tutti i client in grado di riconoscere questa sezione.

  9. #9
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Ma che cacchio sto dicendo.. ignora il commando con cut/grep/sed, mi sono reso conto che usi windows solo dopo aver postato

    Insomma, metti l'issuer giusto, e ricordati che puoi fare anche solo require issuer '/CN=bla', quindi non necessariamente con tutte le parti
    puoi sempre fare anche su windows openssl x509 -text -in tuocertificato per vedere i dati contenuti dentro

  10. #10
    Utente di HTML.it L'avatar di iaco74
    Registrato dal
    Sep 2002
    Messaggi
    682
    Ciao,

    ricapitolando.

    Io ho fatto un certificato con dati diversi per questi tre aspetti

    CA CERTIFICATE
    SERVER CERTIFICATE
    CLIENT CERTIFICATE

    L'unica cosa che hanno in comune è il C CountryName settato su IT.

    Rimane da capire per me

    Quando mysql parla di ISSUER si riferisce ai dati del CA (non del Server Certificates o del client certificates) giusto ?

    Quando invece parla di require subject si riferisce ai dati del CLIENT CERTIFICATE.

    Questo è corretto ?

    Mi sono accorto poi di un errore nel my.ini alla voce [mysql] devo specificare i certificati client e non server giusto ?


    Nonostante questo non riesco a connettermi mi ritorna sempre un "access denied for user mioutente@localhost using password = yes"

    Io sto provando da localhost atraverso mysql da riga di comando:


    Codice PHP:
    mysql -u nomeutente ---ssl-key=c:/path/to/client-cert.pem --ssl-cert=c:/path/to/client-cert.pem --ssl-ca=c:/path/to/ca-cert.pem 
    Suggerimenti ?
    IACO

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.