Mongocxx驱动程序无法使用X.509证书身份验证进行连接

时间:2019-02-26 10:43:36

标签: mongodb ssl mongo-cxx-driver

我正准备使用C ++驱动程序为Mongo实现X.509证书身份验证。驱动程序为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:certificate验证在x.xxx.xxx.xxx上调用ismaster失败

当我在python3脚本中使用相同的证书时,一切正常(pymongo是3.4.0,从Debian repo安装):

    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"))

如果我使用相同的URI从shell运行mongo命令并通过证书选项,则连接成功建立。

我想念什么吗?

0 个答案:

没有答案