php mongodb соединяется с x509

У меня есть оба старых драйвера mongo php 1.6.10 и поддерживается установленный драйвер 1.2.5 mongodb php. Версия PHP 5.6.29 на Debian 8.

как устаревший драйвер, так и поддерживаемый драйвер могут подключаться с использованием основных учетных данных.

Только устаревший драйвер может подключиться с использованием сертификата x509.

Поддерживаемый драйвер вызывает приведенное ниже исключение при попытке сделать простой findOne для коллекции.

PHP Fatal error:  Uncaught exception 'MongoDB\Driver\Exception\RuntimeException' with message 'SCRAM Failure: invalid salt length of 0 in sasl step2'

Я использую клиентскую библиотеку Mongodb для драйвера mongodb http://php.net/manual/en/set.mongodb.php

Вот перефразированный код, который я использую

<?php
$server = 'mongodb://uat-a:27017,uat-b:27017,uat-c:27017';
$options = [
'replicaSet' => 'rs-uat',
'username' => 'CN=my-user,OU=user,O=NA,L=Place,ST=State,C=GB',
'authMechanism' => 'MONGODB-X509',
'authSource' => '$external',
'ssl' => true,
'connect' => true,
];
$driverOptions = [
'context' => stream_context_create(
[
'ssl' => [
'local_cert' => '/etc/local-cert.pem',
'cafile' => '/etc/cafile.pem',
],
]
),
];
$database = 'uatdata';

$client = new MongoDB\Client($server, $options, $driverOptions);
$db = $client->selectDatabase($database);

$doc = $db->selectCollection('errors')->findOne([], ['projection' => ['timestamp' => 1, 'uri' => 1]]);

0

Решение

Ответ состоит в том, чтобы передать authMechanism опция в строке URI. например

mongodb://uat-a:27017,uat-b:27017,uat-c:27017/?authMechanism=MONGODB-X509

Более подробное объяснение можно найти здесь https://jira.mongodb.org/browse/PHPC-914

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]