mysqli_ssl_set în PHP

Setează certificatele pentru o conexiune MySQL criptată (SSL/TLS), înainte de conectare.

Sintaxă
mysqli_ssl_set(mysqli $mysql, ?string $key, ?string $certificate, ?string $ca_certificate, ?string $ca_path, ?string $cipher_algos): true

Ce face mysqli_ssl_set

Când serverul de baze de date este pe alt calculator (de exemplu o bază de date în cloud), datele circulă prin rețea și trebuie criptate. mysqli_ssl_set dă certificatele; parametrii pe care nu îi folosești sunt null. De cele mai multe ori este suficient certificatul autorității ($ca_certificate), primit de la furnizor.

După mysqli_ssl_set, te conectezi cu mysqli_real_connect și flag-ul MYSQLI_CLIENT_SSL.

Parametri

Parametru Descriere
$key Calea către cheia privată a clientului sau null.
$certificate Calea către certificatul clientului sau null.
$ca_certificate Calea către certificatul autorității (CA).
$ca_path Un director cu certificate CA sau null.
$cipher_algos Algoritmii de criptare permiși sau null.

Ce returnează

Întotdeauna true. Erorile apar abia la conectare.

Exemple

Exemplul 1: Conectare criptată la o bază din cloud

<?php
$conn = mysqli_init();
mysqli_ssl_set($conn, null, null, "/etc/ssl/certs/ca-baza-de-date.pem", null, null);
mysqli_real_connect($conn, "db.exemplu.ro", "ana", "parola_ta", "magazin", 3306, null, MYSQLI_CLIENT_SSL);

$r = mysqli_fetch_row(mysqli_query($conn, "SHOW STATUS LIKE 'Ssl_cipher'"));
echo "Criptare: $r[1]";

Rezultat posibil (depinde de server)

Criptare: TLS_AES_256_GCM_SHA384

Greșeli frecvente

  • Setezi certificatele, dar te conectezi fără MYSQLI_CLIENT_SSL. Conexiunea poate rămâne necriptată.

Comenzi înrudite

  • mysqli_init: Creează un obiect mysqli neconectat, pe care îl configurezi cu mysqli_options înainte de mysqli_real_connect.
  • mysqli_real_connect: Conectează la server un obiect creat cu mysqli_init, folosind opțiunile setate înainte.
  • mysqli_options: Setează o opțiune a conexiunii, înainte de conectare: timp maxim, comandă inițială, numere native etc.