2016-05-06 7 views
0

Ich richte eine Entwicklungsumgebung mit PHP ein, die eine Verbindung zu MongoDB über SSL herstellt. Der Server verwendet ein selbstsigniertes Zertifikat und ich verwende die MongoDB PHP-Erweiterung (nicht die ältere Mongo-Erweiterung). Server ist CentOS 7, mongod ist 3.2.6. Client ist OS X mit PHP 5.6.10 (MAMP). Mein mongod.conf hat folgende:PHP Verbindung zu MongoDB mit SSL

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

ich meine Verbindung überprüft arbeitet ohne SSL und überprüfte ich von der Konsole auf dem Server verbinden kann. Mein PHP-Verbindung sieht wie folgt aus:

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

Beim Versuch, eine Verbindung ich folgendes erhalten:

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

Wer mit dieser keine Erfahrung? Ich hatte den Eindruck, dass sslAllowInvalidCertificates die Verbindung zulassen würde, obwohl das Zertifikat selbstsigniert ist (vorausgesetzt, dass das selbstsignierte Zertifikat die fehlgeschlagene Verifizierung ist).

Danke!

+0

Siehe verwandten Artikel [Google Groups mongodb-Benutzer: PHP-Verbindung über SSL] (https://groups.google.com/forum/#!topic/mongodb-user/zmirzLQWmL0) –

Antwort

0

Laut der von Wan Bachtiar erwähnten Google-Gruppe bestand mein Problem darin, dass die MongoDB PECL-Erweiterung gegen eine Version von PHP gebaut wurde, in der OpenSSL nicht enthalten war. Ich habe die Umgebung so modifiziert, dass sie OpenSSL enthält, die PECL-MongoDB-Erweiterung neu erstellt und das Problem gelöst.