- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想在 MongoDB 中使用 SSL。默认情况下未启用它,因此必须使用必要的选项从源代码进行编译。我关注了official documentation并在运行 Ubuntu 14.04 的新部署服务器上构建并运行良好的 v2.6.4 二进制文件。到目前为止一切都很好。
接下来我按照官方docs中的描述设置mongod .我确实遵循了他们使用自认证 key 进行测试的示例。配置的相关部分如下所示:
...
net:
bindIp: 127.0.0.1
port: 27017
ssl:
mode: requireSSL
PEMKeyFile: /opt/mongo/security/mongodb.pem
...
如果我随后运行客户端并指定使用 SSL,我可以正常连接。 ($ mongo --ssl
)。 FWIW,如果我尝试不使用 --ssl
参数,则它不会连接。
好的,是时候通过 Ruby 进行链接了。我在同一台服务器上,我尝试使用以下 ruby 脚本:
require 'rubygems'
require 'mongo'
client = Mongo::MongoClient.new('localhost', 27017, {:ssl => true})
没有。它没有:
/home/test/.rvm/gems/ruby-1.9.3-p547/gems/mongo-1.11.1/lib/mongo/mongo_client.rb:422:in `connect': Failed to connect to a master node at localhost:27017 (Mongo::ConnectionFailure)
from /home/test/.rvm/gems/ruby-1.9.3-p547/gems/mongo-1.11.1/lib/mongo/mongo_client.rb:661:in `setup'
from /home/test/.rvm/gems/ruby-1.9.3-p547/gems/mongo-1.11.1/lib/mongo/mongo_client.rb:177:in `initialize'
from test_mongo_ssl.rb:8:in `new'
from test_mongo_ssl.rb:8:in `<main>'
所以最好确保没有 SSL 的默认连接没有问题。我在 mongod 上禁用 SSL 并重新启动。然后再次尝试 ruby 脚本,这次没有 ssl 选项:
...
client = Mongo::MongoClient.new('localhost', 27017)
而且还不错。因此,我觉得我已经将范围缩小到 ruby 驱动程序和 ssl,但除此之外,没有什么可以继续的了。
编辑 我在同一台服务器上尝试了他们的 Python 驱动程序并使用了他们的 example program :
from pymongo import MongoClient
c = MongoClient(host="localhost", port=27017, ssl=True)
这确实连接正常。所以至少我可以相当确信 mongod 配置正确并且问题出在 Mongo Ruby 驱动程序中的某个地方。很可能是他们当前的驱动程序 (v1.11.1) 中的错误。
更新 我也使用 node.js 驱动程序通过 ssl 成功连接:
var mongo = require('mongodb');
var database = new mongo.Db("my_database", new mongo.Server("127.0.0.1", 27017, {ssl:true} ), {w:0});
database.open(function(err, db) {
if(err) throw err;
db.authenticate('user', 'password', function(err, result) {
var collection = db.collection('foo');
collection.findOne(function(err, item) {
if(err) throw err;
console.log(item);
db.close();
});
});
});
似乎越来越有可能是 ruby 驱动程序中存在错误,或者文档不完整并且没有准确解释如何使用 SSL 连接。因此我打开了一个 new issue在 MongoDB 的问题跟踪器上,希望能弄清这个问题的真相。
最佳答案
令人尴尬的是,这个问题的解决方案是我的/etc/hosts 文件中有一个 localhost 条目的拼写错误:
127.0.0.1 localhost.localdomain locahost
如您所见,它缺少“localhost”中的第二个字母 L。 (我怀疑它在一个意外的 vim 手势中丢失了。)因此为了解决我只需要恢复丢失的“l”:
127.0.0.1 localhost.localdomain localhost
Python 样本为何能正常工作仍然是个谜。正因为如此,我之前没有意识到这是主机文件的问题。
关于ruby - 使用 SSL 通过 Ruby 驱动程序连接到 Mongod 返回 Mongo::ConnectionFailure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26057561/
我正在开发一个 voip 调用应用程序。我需要做的是在接到来电时将 Activity 带到前台。我在应用程序中使用 Twilio,并在收到推送消息时开始调用。 问题是我试图在接到任何电话时显示 Act
我是一名优秀的程序员,十分优秀!