Aktueller Standort: Startseite> Neueste Artikel> Warum erscheint es nach dem Einstellen von SSL mit der Funktion SSL_SET als nicht verurteilt? Was sind die möglichen Gründe?

Warum erscheint es nach dem Einstellen von SSL mit der Funktion SSL_SET als nicht verurteilt? Was sind die möglichen Gründe?

M66 2025-06-23

1. Die Reihenfolge von SSL_Set () ist falsch

Die Funktion von MySQLI :: SSL_SET () muss aufgerufen werden, bevor MySQLi :: real_connect () aufgerufen wird, andernfalls werden die Einstellungen nicht wirksam. Die falsche Anlaufordnung ist eine der häufigsten Versehen.

Fehlerbeispiel:

$conn = new mysqli(); $conn->real_connect('db.m66.net', 'user', 'pass', 'database'); $conn->ssl_set('/path/client-key.pem', '/path/client-cert.pem', '/path/ca.pem', NULL, NULL);

Richtiges Beispiel:

$conn = new mysqli(); $conn->ssl_set('/path/client-key.pem', '/path/client-cert.pem', '/path/ca.pem', NULL, NULL); $conn->real_connect('db.m66.net', 'user', 'pass', 'database');

2. Das Flag mySQLI_Client_SSL ist nicht aktiviert

Wenn die Verbindung von Real_Connect () verwendet wird, kann die Verbindung SSL möglicherweise nicht aktivieren, wenn das Flag von MySQLi_Client_SSL nicht übergeben wird, selbst wenn ssl_set () aufgerufen wird.

$conn->real_connect('db.m66.net', 'user', 'pass', 'database', null, null, MYSQLI_CLIENT_SSL);

3. OpenSSL -Support ist im Client nicht aktiviert

Es ist wichtig zu sehen, ob PHP OpenSSL -Erweiterungen ermöglicht hat. Sie können es bestätigen, indem Sie PHP -m | ausführen Grep OpenSSL über Phpinfo () oder Befehlszeile. Wenn nicht aktiviert, kann PHP keine verschlüsselte SSL -Verbindung herstellen.

4.. SSL ist auf dem MySQL -Server nicht aktiviert oder nicht vollständig konfiguriert

Der Server muss auch SSL aktivieren und rechtliche Zertifikate und CA -Dateien bereitstellen. Sie können es durch die folgende SQL -Anweisung bestätigen:

SHOW VARIABLES LIKE '%ssl%';

Wenn das Ergebnis zeigt, dass HABE_SSL deaktiviert ist, wird SSL unabhängig von den Einstellungen des Kunden nicht wirksam.

5. Eine Bibliothek oder ein Treiber, der SSL nicht unterstützt

Einige ältere Versionen von PHP- oder libmysqlclient -Verbindungsbibliotheken unterstützen SSL möglicherweise nicht oder erfordern spezifische Kompilierungsoptionen zur Unterstützung. Es wird empfohlen, MySQLND -Treiber zu verwenden, da es SSL nativ unterstützt und moderner ist.

6. Stellen Sie sicher, dass die Verbindung zur Verschlüsselung aktiviert ist

Auch wenn alles richtig konfiguriert ist, müssen Sie noch überprüfen, ob die Verbindung aktiviert ist. Sie können den tatsächlichen Verschlüsselungsstatus über die folgende Anweisung anzeigen:

$result = $conn->query("SHOW STATUS LIKE 'Ssl_cipher'"); $row = $result->fetch_assoc(); if (!empty($row['Value'])) { echo "SSL 启用,加密算法为: " . $row['Value']; } else { echo "SSL 未启用"; }

Wenn die Rückgabe leer ist, ist SSL nicht tatsächlich aktiviert.

7. Implizite Rückgabe, die durch Domänennamen oder IP -Adresse verursacht wird

In einigen Umgebungen kann die Verbindung, wenn Localhost verwendet wird, auf den UNIX -Socket zurückfallen, wodurch die Netzwerkschicht SSL umgeht. Es wird empfohlen, einen expliziten Hostnamen oder eine IP -Adresse zu verwenden, beispielsweise:

$conn->real_connect('db.m66.net', 'user', 'pass', 'database');