【问题标题】:PHP Connection to MongoDB with SSL使用 SSL 连接到 MongoDB 的 PHP
【发布时间】:2016-05-06 16:23:09
【问题描述】:

我正在使用 PHP 创建一个通过 SSL 连接到 MongoDB 的开发环境。服务器使用的是自签名证书,我使用的是 MongoDB PHP 扩展(不是旧的 Mongo 扩展)。服务器是 CentOS 7,mongod 是 3.2.6。客户端是带有 PHP 5.6.10 (MAMP) 的 OS X。我的 mongod.conf 有以下内容:

net:
  ssl:
    mode: requireSSL
    PEMKeyFile: /data/ssl/mongodb.pem
    allowConnectionsWithoutCertificates: true

我确认我的连接在没有 SSL 的情况下工作,并确认我可以从服务器上的控制台连接。我的 PHP 连接如下所示:

$mongo = new MongoDB\Driver\Manager("mongodb://" . $mongo_user . ":" . $mongo_pass . "@" . $mongoHost . "/" . $mongo_db, array(
        'ssl' => true,
        'sslAllowInvalidCertificates' => true,
        'host' => $mongoHost
    )
);

尝试连接时,我得到以下信息:

SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

有人有这方面的经验吗?我的印象是 sslAllowInvalidCertificates 会允许连接,即使证书是自签名的(假设自签名证书是验证失败的原因)。

谢谢!

【问题讨论】:

标签: php mongodb ssl


【解决方案1】:

根据 Wan Bachtiar 提到的 Google Group,我的问题是 MongoDB PECL 扩展是针对未包含 OpenSSL 的 PHP 版本构建的。我修改了环境以包含 OpenSSL,重建了 PECL MongoDB 扩展并解决了问题。

【讨论】:

    猜你喜欢
    • 2021-04-01
    • 2014-08-14
    • 1970-01-01
    • 2011-01-25
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多