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)
);
?>
Où 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. |
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
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.