Conexión
PHP Manual

Conectar sobre SSL

El controlador admite conexiones a » MongoDB sobre SSL y puede opcionalmente usar opciones Contexto de flujos de SSL para proporcionar más detalles, tales como verificar certificados con cadenas de certificado específicas, o autenticar a » MongoDB usando la certificación X509.

Ejemplo #1 Conectar a una instancia de MongoDB con encriptación SSL

<?php
$mc 
= new MongoClient("mongodb://server1", array("ssl" => true));
?>

Ejemplo #2 Conectar a una instancia de MongoDB con encriptación SSL, verificando que es quien se espera

<?php
$ctx 
stream_context_create(array(
    
"ssl" => array(
        
/* Verificar opcionalmente que el servidor es el previsto, y que ha sido certificado por la CA en que confiamos */
        
"verify_peer"       => true,
        
"allow_self_signed" => false,
        
"cafile"            => "/vagrant/certs/ca.pem",
    ),
));

$mc = new MongoClient(
    
"mongodb://server1"
    array(
"ssl" => true), 
    array(
"context" => $ctx)
);
?>

Ejemplo #3 Conectar a una instancia de MongoDB que requiera certificados cliente

<?php
$ctx 
stream_context_create(array(
    
"ssl" => array(
        
"local_cert" => "/vagrant/certs/client.pem",
        
/* Si el certificado que proporcionamos fue codificado con passphrase, es necesario establecerlo aquí */
        
"passphrase" => "My Passphrase for the local_cert",

        
/* Verificar opcionalmente que el servidor es el previsto */
        
"verify_peer" => true,
        
"cafile"      => "/vagrant/certs/ca.pem",
    ),
));

$mc = new MongoClient(
    
"mongodb://server1/?ssl=true"
    array(), 
    array(
"context" => $ctx)
);
?>

Ejemplo #4 Autenticación con certificados X.509

El nombre de usuario es el sujeto del certificado de X509, el cual puede extraerse así:

openssl x509 -in /vagrant/certs/ca-signed-client.pem -inform PEM -subject -nameopt RFC2253
<?php
$ctx 
stream_context_create( array(
    
"ssl" => array(
        
"local_cert" => "/vagrant/certs/ca-signed-client.pem",
    )
) );

$mc = new MongoClient(
    
'mongodb://username@server1/?authSource=$external&authMechanism=MONGODB-X509&ssl=true'
    array(), 
    array(
"context" => $ctx)
);
?>

Donde username es el sujeto del certificado.

Historial de cambios

Versión Descripción
1.5.0 Se añadió soporte para autenticación X509.
1.4.0 Se añadió soporte para conectar con MongoDB habilitado para SSL.

Conexión
PHP Manual