【问题标题】:PHP mysqli cannot recognize SSL certificates to remote databasePHP mysqli 无法识别远程数据库的 SSL 证书
【发布时间】:2017-12-18 03:44:33
【问题描述】:

我想通过 mysqli 函数连接远程 mysql 数据库。连接还需要 SSL 证书才能访问那里。所以我的代码如下所示:

$db = array(
            "host" => "host",
            "user" => "user",
            "password" => "password",
            "dbName" => "dbName"
        );

        ini_set ('error_reporting', E_ALL);
        ini_set ('display_errors', '1');
        error_reporting (E_ALL|E_STRICT);

        $connection = mysqli_init();
        mysqli_options ($connection, MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true);

        $connection->ssl_set('/usr/local/certs/client-key.pem',
 '/usr/local/certs/client-cert.pem', '/usr/local/certs/server-ca.pem', NULL, NULL);
        $link = mysqli_real_connect ($connection, $db['host'],
 $db['user'], $db['password'], $db['dbName'], 3306, NULL, MYSQLI_CLIENT_SSL);

 if (!$link)
        {
            die ('Connect error (' . mysqli_connect_errno() . '): '
 . mysqli_connect_error() . "\n");
        } 
        else 
        {
            $response = $connection->query('SHOW TABLES;');
            $this->output->writeln($response);
            $connection->close();
        }

然后我得到这个错误:

PHP Warning:  mysqli_real_connect(): Peer certificate CN=`[project 
name]' did not match expected CN=`[IP address]`

这几天我一直在为这个错误而苦苦挣扎。我也 100% 确定我的证书和路径是正确的。如何修复它并建立连接?

【问题讨论】:

  • 不幸的是,这不是同一个问题。该主题的作者使用 PDO 而不是 mysqli,所以我仍然不知道我应该在我的代码中修复什么
  • 仔细阅读!他们的解决方案与 mysqli / PDO 完全无关,与证书上 CN 的设置方式有关。
  • 所以我应该在我的 /etc/host 文件上写下类似“10.5.5.20 dbServer1.company.local”的内容,然后在我的 $db 数组中使用 dbServer1.company.local 而不是常规 IP 地址.php 文件?对不起,也许这是个愚蠢的问题,但我是 PHP/mysql 连接的新手
  • 在“颁发给”下的证书中,您有“通用名称 (CN)”。在那里,您可以拥有一个或多个 FQDN 或 IP 地址。当您使用不属于 CN 的域名或 IP 加载网站时,该会话的证书将无效。

标签: php mysql ssl


【解决方案1】:

在我的情况下,我必须将 MYSQLI_OPT_SSL_VERIFY_SERVER_CERT 设置为 false 才能正常工作。

请尝试以下方法:

mysqli_options ($connection, MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, false);

希望它有效,也对以后的读者有益。

【讨论】:

  • 这不会使连接容易受到中间人攻击吗?
猜你喜欢
  • 1970-01-01
  • 2016-01-07
  • 2013-11-14
  • 2016-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-14
相关资源
最近更新 更多