GNU/Linux >> Tutoriels Linux >  >> Linux

Activer SSL et les connexions à distance pour MySQL

Remarque  :cet article suppose que vous avez installé et configuré MySQL® sur votre serveur.

Activer SSL pour MySQL

Avant d'installer votre certificat SSL sur votre base de données MySQL, sauvegardez et supprimez les fichiers de certificat par défaut. Vous pouvez choisir votre propre nom de répertoire pour cette étape. Cet exemple utilise les mysql-backup-certs annuaire. Pour effectuer les étapes suivantes, passez à l'utilisateur root.

  1. Créez un nouveau répertoire de sauvegarde :

    mkdir -p ~/mysql-backup-certs/
    
  2. Allez dans /var/lib/mysql répertoire et déplacez chaque certificat par défaut vers votre répertoire de sauvegarde nouvellement créé :

    cd /var/lib/mysql
    mv ca.pem ca-key.pem ~/mysql-backup-certs/
    mv server-key.pem server-cert.pem ~/mysql-backup-certs/
    mv client-key.pem client-cert.pem ~/mysql-backup-certs/
    mv private_key.pem public_key.pem ~/mysql-backup-certs/
    
  3. Redémarrez MySQL en exécutant l'une des commandes suivantes :

    service mysqld restart
    

    ou

    systemctl restart mysqld
    
  4. Utilisez l'une des commandes suivantes pour vérifier le mysqld état :

    service mysqld status
    

    ou

    systemctl status mysqld
    
  5. Vérifiez l'état SSL depuis l'intérieur du shell MySQL. Pour ce faire, connectez-vous à MySQL en tant qu'utilisateur root :

    mysql -u root -p
    (Enter MySQL root password)
    
  6. Exécutez la requête suivante pour vérifier l'état SSL dans MySQL :

    SHOW GLOBAL VARIABLES LIKE '%ssl%';
    STATUS;
    

    Remarque :Vous n'avez pas besoin d'utiliser des majuscules. L'exemple les utilise pour différencier la syntaxe de commande de ce que vous interrogez.

    Dans la commande précédente, vous souhaitez voir le statut SSL comme désactivé , et l'utilisateur root est connecté sans SSL.

  7. Pour activer la connexion SSL avec notre propre certificat en éditant le my.cnf fichier, exécutez l'une des commandes suivantes :

    vim /etc/my.cnf
    

    ou

    nano /etc/my.cnf
    
  8. Trouvez le [mysqld] et ajoutez les paramètres de configuration suivants :

    # You will use your own SSL certificates directory for these. The following are examples only.
    ssl-ca=/etc/pki/tls/certs/ca.pem
    ssl-cert=/etc/pki/tls/certs/server-cert.pem
    ssl-key=/etc/pki/tls/private/server-key.pem
    
  9. Enregistrez et quittez le fichier. Ensuite, redémarrez MySQL en exécutant l'une des commandes suivantes :

    service mysqld restart
    

    ou

    systemctl restart mysqld
    
  10. Une fois MySQL sauvegardé, reconnectez-vous au shell MySQL :

    mysql -u root -p
    (Enter MySQL root password)
    
  11. Exécutez à nouveau la requête SSL :

    SHOW VARIABLES LIKE '%ssl%';
    STATUS;
    
  12. Si la valeur de la section SSL indique oui , le SSL est activé pour MySQL. Cependant, vous voyez toujours que l'utilisateur racine n'est pas connecté à l'aide de SSL. C'est normal. Si vous souhaitez modifier cela, vous pouvez forcer toutes les connexions utilisateur localhost à utiliser SSL. Vous devez modifier le my.cnf fichier à nouveau en exécutant l'une des commandes suivantes :

    vim /etc/my.cnf
    

    ou

    nano /etc/my.cnf
    
  13. Entrez la configuration suivante à la fin :

    [client]
    ssl-ca=/etc/pki/tls/certs/ca.pem
    ssl-cert=/etc/pki/tls/certs/client-cert.pem
    ssl-key=/etc/pki/tls/private/client-key.pem
    
  14. Redémarrez MySQL. Une fois MySQL sauvegardé, reconnectez-vous au shell MySQL :

    mysql -u root -p
    (Enter MySQL root password)
    
  15. Exécutez à nouveau la requête suivante :

    SHOW VARIABLES LIKE '%ssl%';
    STATUS;
    

Si vous souhaitez simplement activer les connexions SSL à partir des connexions localhost, vous avez terminé. Cependant, si vous souhaitez également activer les connexions à distance pour MySQL, lisez la suite.

Activer les connexions à distance pour MySQL

Les instructions suivantes activent les connexions à distance pour MySQL. De plus, ces utilisateurs distants doivent disposer de fichiers de certificat signés par votre autorité de certification (CA) pour se connecter.

Cet exemple indique (en utilisant trois astérisques :*** ) le paramètre forçant la signature de l'AC si vous souhaitez autoriser les connexions à distance sans l'AC.

  1. Utilisez votre éditeur de texte de ligne de commande préféré pour modifier le /etc/my.cnf fichier à nouveau :

    vim /etc/my.cnf
    

    ou

    nano /etc/my.cnf
    
  2. Incluez ce qui suit au bas de [mysqld] rubrique :

    bind-address = *
    require_secure_transport = ON 		***
    
  3. Enregistrez et quittez le fichier en utilisant :wq .

  4. Redémarrez MySQL. Confirmez que MySQL fonctionne à nouveau. Vous devez vous reconnecter au shell MySQL.

  5. Après vous être connecté, créez l'utilisateur en exécutant l'une des commandes suivantes :

    CREATE USER 'example'@'%' IDENTIFIED BY 'password';
    

    ou

    CREATE USER 'example'@'%' IDENTIFIED BY 'password' REQUIRE X509; 	***
    
  6. Après avoir accordé à cet utilisateur les autorisations sur les bases de données sur lesquelles vous souhaitez qu'il ait des autorisations, videz les privilèges pour mettre à jour les autorisations MySQL à partir du shell :

    flush privileges;
    

Vous avez peut-être remarqué que le % situé après le @ symbole dans le précédentcreate user commande est ce qui désigne réellement l'utilisateur en tant qu'utilisateur distant.

En prime, si vous avez un utilisateur qui accède à MySQL uniquement à partir d'une adresse IP statique, vous pouvez entrer cette adresse IP à la place du % pour permettre à cet utilisateur d'accéder à MySQL à partir de son adresse IP spécifique. Cependant, notez que l'utilisateur ne peut accéder à la base de données qu'à partir de cette adresse IP. Si leur adresse IP change, ils n'y ont plus accès. C'est pourquoi la plupart des administrateurs utilisent le paramètre generalremote de % à la place.

Vous avez maintenant activé les connexions SSL ainsi que l'accès à distance à votre base de données MySQL.


Linux
  1. Comment activer le journal des requêtes lentes pour MySQL

  2. Mettre une adresse IP en liste blanche dans CSF pour les connexions MySQL distantes

  3. Comment configurer des connexions distantes et sécurisées pour MySQL sur Ubuntu 16.04

  4. Comment créer un pem pour votre SSL existant

  5. CentOS / RHEL :Comment activer SSL pour Apache

Comment autoriser les connexions à distance à MySQL

Comment ajouter un hôte Linux et Windows distant à Icinga 2 pour la surveillance

Comment activer SSL et les connexions à distance pour MySQL sur CentOS 7

Surveillez les connexions et les requêtes MySQL avec mytop

Comment autoriser les connexions à distance à MySQL

Comment calculer max_connections pour PostgreSQL et default_pool_size pour pgbouncer ?