Я пытаюсь настроить mongodb 2.6.8 replicaset с помощью ssl. Я составил Монго вручную с поддержкой SSL и поддержкой SSL в моей конфигурации следующим образом:Включение ssl в mongodb replicaset без сертификатов
sslMode=requireSSL
sslPEMKeyFile=/etc/ssl/mongodb.pem
sslCAFile=/etc/ssl/client.pem
sslWeakCertificateValidation=true
replSet=rs0
Я создал mongodb.pem и client.pem файлов BU работает OpenSSL следующим образом на каждом сервере:
# openssl req -new -x509 -days 365 -nodes -out mongodb-cert.crt -keyout mongodb-cert.key -subj '/C=US/ST=MA/L=Waltham/CN=<fully qualified domain name>'
# cat mongodb-cert.key mongodb-cert.crt > mongodb.pem
# openssl req -new -x509 -days 365 -nodes -out client-cert.crt -keyout client-cert.key -subj '/C=US/ST=MA/L=Waltham/CN=<fully qualified domain name>'
# cat client-cert.key client-cert.crt > client.pem
на каждом сервере я могу подтвердить, что сертификаты и протокол SSL, потому что работают на каждом из моих серверов я могу сделать следующее:
mongo --ssl --sslPEMKeyFile=/etc/ssl/client.pem --sslCAFile=/etc/ssl/mongodb.pem <fully qualified domain name>
каплю меня в Монго оболочку.
На первичном узле, я могу сделать rs.initiate() и rs.status(), и это выглядит отлично:
> rs.initiate()
{
"info2" : "no configuration explicitly specified -- making one",
"me" : "<fqdn node 1>:27017",
"info" : "Config now saved locally. Should come online in about a minute.",
"ok" : 1
}
> rs.status()
{
"set" : "rs0",
"date" : ISODate("2015-04-02T20:25:27Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "<fqdn node 1>:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 23,
"optime" : Timestamp(1428006318, 1),
"optimeDate" : ISODate("2015-04-02T20:25:18Z"),
"electionTime" : Timestamp(1428006318, 2),
"electionDate" : ISODate("2015-04-02T20:25:18Z"),
"self" : true
}
],
"ok" : 1
}
Однако, когда я пытаюсь добавить второй элемент, я получаю страшный 13144 ошибка:
rs0:PRIMARY> rs.add("<fqdn node 2>:27017")
{
"errmsg" : "exception: need most members up to reconfigure, not ok : <fqdn node 2>:27017",
"code" : 13144,
"ok" : 0
}
следует также отметить, что соединение между двумя узлами работает нормально, то есть, в то время как на узле 1:
mongo --ssl --host <fqdn node 2>
или в то время как на узле 2:
mongo --ssl --host <fqdn node 1>
как произведение.
Как передать параметр ssl и/или сертификаты команде rs.add()?
Я действительно не забочусь о передаче сертификатов (именно поэтому я указал sslWeakCertificateValidation = true); Я больше обеспокоен тем, что связь между узлами находится в ssl.