Подключение по SSL
Драйвер поддерживает подключение » MongoDB по SSL и может дополнительно использовать параметры контекста потока SSL для предоставления подробной информации, такой как проверка сертификатов по определенной цепочке или проверка подлинности » MongoDB с использованием сертификатов X.509.
Пример #1 Подключение к MongoDB по SSL
<?php
$mc = new MongoClient("mongodb://server1", array("ssl" => true));
?>
Пример #2 Подключение к MongoDB по SSL, проверяя подлинность сертификата:
<?php
$SSL_DIR = "/vagrant/certs";
$SSL_FILE = "CA_Root_Certificate.pem";
$ctx = stream_context_create(array(
"ssl" => array(
/* Удостоверяющий Центр, которым должен быть удостоверен сертификат */
"cafile" => $SSL_DIR . "/" . $SSL_FILE,
/* Отключаем самоподписанные сертификаты */
"allow_self_signed" => false,
/* Проверяем сертификат по корневому сертификату Удостоверяющего Центра. */
"verify_peer" => true, /* По умолчанию false до PHP 5.6 */
/* Проверяем имя партнера (например, проверка имени хоста) */
/* Будет использовать имя хоста, используемое для подключения к узлу */
"verify_peer_name" => true,
/* Проверяем, что срок действия сертификата сервера не истек */
"verify_expiry" => true, /* Доступно только в PHP-драйвере MongoDB */
),
);
$mc = new MongoClient(
"mongodb://server1",
array("ssl" => true),
array("context" => $ctx)
);
?>
Замечание:
Параметр
"verify_peer_name"
был добавлен в PHP 5.6.0. В версии 1.6.5, функция была добавлена в драйвер, поэтому он работает также с PHP 5.3 и 5.4.
Пример #3 Подключение к MongoDB с клиентским сертификатом
<?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,
/* Если сертификат, был закодирован паролем, необходимо указать его здесь */
"passphrase" => "My Passphrase for the local_cert",
/* При желании дополнительно проверьте */
"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)
);
?>
Пример #4 Аутентификация по сертификатам X.509
Имя пользователя – certificate subject
из X.509, можно получить следующим образом:
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
– это атрибут subject сертификата.
Список изменений
Версия | Описание |
---|---|
1.5.0 | Добавлена поддержка аутентификации X.509. |
1.4.0 | Добавлена поддержка подключения к MongoDB с поддержкой SSL. |