Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb Mongocxx驱动程序无法使用X.509证书身份验证进行连接 我想用C++驱动程序实现Mongo的X.509证书认证。驱动程序是3.4.0(启用OpenSSL的自定义构建),C驱动程序是1.13.0,运行在Debian 9上,服务器是Mongo 3.2_Mongodb_Ssl_Mongo Cxx Driver - Fatal编程技术网

Mongodb Mongocxx驱动程序无法使用X.509证书身份验证进行连接 我想用C++驱动程序实现Mongo的X.509证书认证。驱动程序是3.4.0(启用OpenSSL的自定义构建),C驱动程序是1.13.0,运行在Debian 9上,服务器是Mongo 3.2

Mongodb Mongocxx驱动程序无法使用X.509证书身份验证进行连接 我想用C++驱动程序实现Mongo的X.509证书认证。驱动程序是3.4.0(启用OpenSSL的自定义构建),C驱动程序是1.13.0,运行在Debian 9上,服务器是Mongo 3.2,mongodb,ssl,mongo-cxx-driver,Mongodb,Ssl,Mongo Cxx Driver,要连接的代码: 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 mongo

要连接的代码:

    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
expired:[TLS握手失败:错误:1416F086:SSL例程:TLS\u进程\u服务器\u证书:证书验证在x.xxx.xxx上调用ismaster失败

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

另外,如果我使用相同的URI和pass证书选项从shell运行mongo命令,连接就会成功建立


我遗漏了什么吗?

您解决了问题吗?当我将ssl/tls选项传递给mongocxx::pool时,我也遇到了同样的问题。
    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"))