2017-02-15 14 views
0

У меня есть и старый драйвер mongo php 1.6.10, и установлен установленный драйвер php 1.2.5 mongodb. php версия 5.6.29 на Debian 8.php mongodb connect with x509

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

Только старый драйвер может подключиться с помощью сертификата 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