Maison  >  Article  >  base de données  >  Comment puis-je me connecter en toute sécurité à un serveur MySQL distant en utilisant SSL depuis PHP ?

Comment puis-je me connecter en toute sécurité à un serveur MySQL distant en utilisant SSL depuis PHP ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-19 18:43:031044parcourir

How Can I Securely Connect to a Remote MySQL Server Using SSL from PHP?

Connexion à un serveur MySQL distant avec SSL depuis PHP

La question posée concerne l'établissement d'une connexion sécurisée à un serveur MySQL distant utilisant SSL depuis PHP. L'extrait de code d'origine utilisant mysql_connect génère une « erreur de connexion SSL ».

Comprendre le problème

Pour approfondir la cause première, considérez ce qui suit :

  • MySQLi (MySQL Improvementd Extension) offre une prise en charge supérieure pour les connexions cryptées par rapport à l'ancienne extension mysql_connect.
  • Pour optimiser la sécurité, les configurations MySQL doivent inclure :

    • [client]

      • ssl-ca = /etc/mysql/ssl/ca-cert.pem
      • ssl-cert = /etc/mysql/ssl/client -cert.pem
      • ssl-key = /etc/mysql/ssl/client-key.pem
  • Une communication sécurisée peut également être configuré via PHP :

    • mssql.secure_connection = On dans php.ini

Solution MySQL

Pour faciliter les connexions SSL à l'aide de MySQLi, exploitez le code suivant :

$db = mysqli_init();
mysqli_options ($db, MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true);
$db->ssl_set('/etc/mysql/ssl/client-key.pem', '/etc/mysql/ssl/client-cert.pem', '/etc/mysql/ssl/ca-cert.pem', NULL, NULL);
$link = mysqli_real_connect ($db, 'ip', 'user', 'pass', 'db', 3306, NULL, MYSQLI_CLIENT_SSL);

Solution PDO_MYSQL

Si le respect de PDO_MYSQL est essentiel, utilisez cette approche :

$pdo = new PDO('mysql:host=ip;dbname=db', 'user', 'pass', array(
    PDO::MYSQL_ATTR_SSL_KEY    =>'/etc/mysql/ssl/client-key.pem',
    PDO::MYSQL_ATTR_SSL_CERT=>'/etc/mysql/ssl/client-cert.pem',
    PDO::MYSQL_ATTR_SSL_CA    =>'/etc/mysql/ssl/ca-cert.pem'
    )
);

Attention

Notez que le support SSL pour PDO est limité dans les versions PHP antérieures à 5.3.8. Pour une fonctionnalité optimale, envisagez de passer à une version PHP plus récente.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn