Rechercher une fonction PHP

Connexion via SSL

Le driver supporte les connexions » MongoDB via SSL et peut, optionnellement, utiliser les options de contexte du flux SSL pour fournir plus de détails, comme la vérification des certificats en utilisant une chaîne de certificat spécifique, ou l'authentification à » MongoDB en utilisant des certificats X509.

Exemple #1 Connexion à l'instance MongoDB avec un cryptage SSL

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

Exemple #2 Connexion à l'instance MongoDB avec le cryptage SSL avec des vérifications

<?php
$SSL_DIR 
"/vagrant/certs";
$SSL_FILE "CA_Root_Certificate.pem";

$ctx stream_context_create(array(
    
"ssl" => array(
        
/* Authorité de certification du certificat du serveur distant utilisé pour la signature */
        
"cafile"            => $SSL_DIR "/" $SSL_FILE,

        
/* On désactive les certificats auto-signés */
        
"allow_self_signed" => false,

        
/* Vérifie le certificat d'apairage avec notre certificat racine d'authorité de certification */
        
"verify_peer"       => true/* Default to false pre PHP 5.6 */

        /* Vérifie le nom d'apairage (i.e. validation du nom d'hôte) */
        /* Nous utilisons le nom d'hôte utilisé pour la connexion sur le noeud */
        
"verify_peer_name"  => true,

        
/* On vérifie que le certificat du serveur n'a pas expiré */
        
"verify_expiry"     => true/* Seulement disponible avec le driver MongoDB PHP */
    
),
);

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

Note:

"verify_peer_name" est nouveau en PHP 5.6.0. Le driver MongoDB, depuis la version 1.6.5, a porté cette fonctionalité dans le driver lui-même, aussi, il fonctionne avec PHP 5.3 et 5.4 également.

Exemple #3 Connexion à l'instance MongoDB qui nécessite des certificats client

<?php
$SSL_DIR  
"/vagrant/certs";
$SSL_FILE "CA_Root_Certificate.pem";

$MYCERT   "/vagrant/certs/ca-signed-client.pem";

$ctx stream_context_create(array(
    
"ssl" => array(
        
"local_cert"        => $MYCERT,
        
/* Si le certificat que nous avons fourni a été encodé avec une phrase en guise de mot de passe, nous devons la définir ici */
        
"passphrase"        => "Ma phrase mot de passe ici pour le local_cert",

        
/* Optionnellement, on vérifie que le serveur est bien celui annoncé */
        
"cafile"            => $SSL_DIR "/" $SSL_FILE,
        
"allow_self_signed" => false,
        
"verify_peer"       => true,
        
"verify_peer_name"  => true,
        
"verify_expiry"     => true,
    ),
));

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

Exemple #4 Authentification avec des certificats X.509

Le nom d'utilisateur correspond au certificate subject du certificat X509, qui peut être extrait comme ceci :

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)
);
?>

username est le sujet du certificat.

Historique

Version Description
1.5.0 Ajout du support pour l'authentification X509.
1.4.0 Ajout du support pour les connexions MongoDB via SSL.
Rechercher une fonction PHP

Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-mongo.connecting.ssl.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.

Références

  1. Consulter le document html Langue du document :fr Manuel PHP : http://php.net

Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.

Table des matières Haut