Драйвер Mongocxx не может подключиться с использованием аутентификации сертификата X.509 - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь реализовать аутентификацию сертификата X.509 для Mongo с использованием драйвера C ++.Драйвер 3.4.0 (пользовательская сборка с включенным OpenSSL), драйвер C 1.13.0, работает на Debian 9, сервер Mongo 3.2

Код для подключения:

    mongocxx::options::client opts;
    mongocxx::options::ssl ssl_opts;
    ssl_opts.allow_invalid_certificates(false);
    ssl_opts.ca_file( "rootCA.pem );
    ssl_opts.pem_file( "mongodb.pem" );
    opts.ssl_opts(ssl_opts);
    const mongocxx::uri url{"mongodb://x.xxx.xxx.xxx:27017/?ssl=true&maxPoolSize=10"};

Это передается экземпляру mongocxx :: pool.

Когда я пытаюсь выполнить команду, я получаю:

соединение не установлено: подходящих серверов не найдено: serverSelectionTimeoutMS истекло: [Сбой квитирования TLS: ошибка: 1416F086: процедуры SSL: tls_process_server_certificate: проверка сертификата не удалась, вызов ismaster на x.xxx.xxx.xxx

Когда я использую те же сертификаты в скрипте python3, все работает нормально (pymongoэто 3.4.0, установлен из репозитория Debian):

    import pymongo
client = pymongo.MongoClient('mongodb://3.120.209.225:27017/?ssl=true&maxPoolSize=10', 
                             ssl_ca_certs='rootCA.pem',
                             ssl_certfile='mongodb.pem')

db = client.ucas

print(db.command("isMaster"))

Также, если я запускаю команду mongo из оболочки с тем же URI и передаю параметры сертификата, соединение успешно устанавливается.

Сделатьчто-то упустить?

...