PHP到MySQL使用SSL

我有一个远程MySQL服务器,需要我使用SSL进行连接。 我可以使用我的terminal连接到它。 但是当我尝试使用PHP连接到它时,出现以下错误:

SSL3_GET_RECORD:wrong version number 

看起来像OPENSSL握手失败,原因可能是我的PHP试图使用SSL3连接到它。 MySQL服务器仅支持TLSv1.2。 有没有办法强制PHP使用TLSv1.2连接?

这是我用来连接的代码:

 <?php ini_set ('error_reporting', E_ALL); ini_set ('display_errors', '1'); error_reporting (E_ALL|E_STRICT); $db = mysqli_init(); mysqli_options ($db, MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true); $db->ssl_set(NULL, NULL, '/path/to/ca-cert.pem' , NULL, NULL); $link = mysqli_real_connect ($db, 'hostname', 'user', 'password', 'dbname', 3306, NULL, MYSQLI_CLIENT_SSL); if (!$link) { die ('Connect error (' . mysqli_connect_errno() . '): ' . mysqli_connect_error() . "\n"); } else { $res = $db->query('SHOW TABLES;'); print_r ($res); $db->close(); } ?> 

我已经尝试过的事情和可能的问题:

  1. 看起来像openssl版本不匹配。 我可以连接使用我的terminal,而不是PHP,所以我检查我的openssl版本在terminal与我使用phpinfo(),他们是一样的
  2. PHP可能使用SSL3连接,而服务器只支持TLSv1.2,我无法find一种方法来强制使用TLSv1.2连接到MySQL
  3. 我试图使用tcpdump / Wireshark观察握手,但我不认为这个过程甚至因为版本不匹配而启动。
  4. 我确认使用“openssl s_client -debug”,服务器不支持SSL3,这让我觉得这是我的电脑上的问题,但不知道。
  5. 我说我的客户端可能使用SSL3的原因是SSL3_GET_RECORD,我也不确定我是否也适用。

所以,总之,帮助!