【发布时间】: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 会允许连接,即使证书是自签名的(假设自签名证书是验证失败的原因)。
谢谢!
【问题讨论】: