我在測試通過SSL連接到MySQL服務器的過程。我可以通過SSL連接使用CLI mysql客戶端,而不會出現問題。但是,試圖通過PHP連接(使用相同的用戶名/主機名/密碼/證書)時,我收到此錯誤信息:如何在MySQL和PHP之間連接SSL?
PHP Warning: PDO::__construct(): SSL operation failed with code 1.
OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in /home/username/mysql.php on line 7
PHP Warning: PDO::__construct(): Cannot connect to MySQL by using SSL in /home/username/mysql.php on line 7
PHP Warning: PDO::__construct(): [2002] (trying to connect via tcp://db.server.net:3306) in /home/username/mysql.php on line 7
PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002] ' in /home/username/mysql.php:7
然而,證書不應該是無效的,因爲使用它們通過連接命令行客戶端的作品,對吧?在PHP/openssl中有什麼可能導致這個問題?
這是我使用的測試腳本(與屏蔽連接信息),我已經在谷歌發現,一切都/其它地方告訴我,這應該工作:
<?php
$db = new PDO("mysql:dbname=database_name;host=db.server.net", "user_name", "some_password", [
PDO::MYSQL_ATTR_SSL_CERT => "/etc/pki/tls/mysql/remote_client-cert.pem",
PDO::MYSQL_ATTR_SSL_KEY => "/etc/pki/tls/mysql/remote_client-key.pem",
PDO::MYSQL_ATTR_SSL_CA => "/etc/pki/tls/mysql/remote_ca-cert.pem",
]);
我建議[這個博客(http://www.madirish.net/214)和[SO後(http://stackoverflow.com/questions/3657765/php-to-mysql-ssl-連接)鏈接檢出 – zedfoxus