使用SSL连接到MongoDB的PHP

时间:2016-05-06 16:23:09

标签: php mongodb ssl

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

choco install git -force -debug

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

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

尝试连接时,我得到以下内容:

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

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

谢谢!

1 个答案:

答案 0 :(得分:0)

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