我正在使用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也会允许连接(假设自签名证书是验证失败的原因)。
谢谢!
答案 0 :(得分:0)
根据Wan Bachtiar提到的Google Group,我的问题是MongoDB PECL扩展是针对没有包含OpenSSL的PHP版本构建的。我修改了环境以包含OpenSSL,重建了PECL MongoDB扩展并解决了这个问题。