2016-05-06 2 views
0

Я настраиваю среду разработки с PHP, создавая соединение с MongoDB через SSL. Сервер использует самозаверяющий сертификат, и я использую расширение PHP MongoDB (не более старое монго-расширение). Сервер CentOS 7, mongod - 3.2.6. Клиент - OS X с PHP 5.6.10 (MAMP). Мой mongod.conf имеет следующее:PHP-соединение с MongoDB с SSL

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 разрешат соединение, даже если сертификат самоподписан (при условии, что самозаверяющий сертификат является отказом проверки).

Спасибо!

+0

См. Соответствующую запись [Группы Google mongodb-user: PHP Connection over SSL] (https://groups.google.com/forum/#!topic/mongodb-user/zmirzLQWmL0) –

ответ

0

В группе Google, упомянутой Ваном Бахтияром, моя проблема заключалась в том, что расширение PECL MongoDB было создано против версии PHP, в которой не было включен OpenSSL. Я изменил среду, включив OpenSSL, перестроил расширение PECL MongoDB и решил проблему.

Смежные вопросы