- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我完成了以下教程 ( https://medium.com/@rajanmaharjan/secure-your-mongodb-connections-ssl-tls-92e2addb3c89 ) 以设置自签名 SSL 证书以保护设备与托管 mongoDB 数据库的服务器之间的通信。
我可以使用以下命令从服务器和设备访问数据库:
mongo --ssl --sslCAFile/path/to/CA.pem --sslPEMKeyFile/path/to/mongodb.pem --host IP:port
当我尝试使用 C++ 程序连接到数据库时,出现段错误:
段错误(核心转储)
GDB 的输出是
程序收到信号 SIGSEGV,段错误。
0x0000007fb7f6d6a8 在 mongocxx::v_noabi::client::client(mongocxx::v_noabi::uri const&, mongocxx::v_noabi::options::client const&) () 来自/usr/local/lib/libmongocxx.so._noabi
我将连接实例化为:
mongocxx::instance instance{};
mongocxx::options::ssl ssl_opts;
ssl_opts.pem_file("/path/to/mongodb.pem");
// ssl_opts.allow_invalid_certificates(false); // I have tried this
mongocxx::options::client client_opts;
client_opts.ssl_opts(ssl_opts);
auto client = mongocxx::client{mongocxx::uri{"mongodb://user:pwd@IP:port/?authMechanism=MONGODB-X509&ssl=true"}, client_opts};
然后用下面的命令编译:
c++ --std=c++11 main.cpp $(pkg-config --cflags --libs libmongocxx) -Wl,-rpath,/usr/local/lib
我无法修复此错误或在线找到解决方案,我们将不胜感激。
版本:
Mongo c - 1.10.1
Mongo cxx - 3.3.0
回溯:
(gdb) thread apply all bt
Thread 1 (Thread 0x7fb7ff4000 (LWP 17800)):
#0 0x0000007fb7f6d6a8 in
mongocxx::v_noabi::client::client(mongocxx::v_noabi::uri const&,
mongocxx::v_noabi::options::client const&) () from
/usr/local/lib/libmongocxx.so._noabi
#1 0x00000000004027d0 in main ()
最佳答案
有一个 known serious bug将 options::ssl_opts
传递给 C++ 驱动程序版本 3.3.0 中的客户端构造函数导致段错误。这在 3.3.1 中已修复。强烈建议您升级。
作为 3.3.0 的解决方法,您可以通过 URI 字符串传递 pem_file 选项。 URI 选项 "sslclientcertificatekeyfile"
对应于 options::ssl::pem_file
选项。例如:
auto uri = mongocxx::uri{"mongodb://localhost/?ssl=true&sslclientcertificatekeyfile=/path/to/mongodb.pem"};
但如果可能,请升级到 3.3.1。
关于c++ - Mongocxx 无法使用 SSL 连接到 mongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52759683/
我正在开发一个 voip 调用应用程序。我需要做的是在接到来电时将 Activity 带到前台。我在应用程序中使用 Twilio,并在收到推送消息时开始调用。 问题是我试图在接到任何电话时显示 Act
我是一名优秀的程序员,十分优秀!