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.