2016-08-22 2 views
0

Я запускаю экземпляр mongodb 3.2 на vServer за брандмауэром (который мне не разрешено настраивать). Mongo доступен (и подключается) из любого места (bind_ip: 0.0.0.0), если ssl отключен в /etc/mongod.confПочему mongodb отказывается от соединений ssl?

Далее я сгенерировал CA, server.pem и client.pem (для подключения через монго-оболочку). Эта Certs работает отлично, так как я могу подключиться к mongod из машины mongod работаю на:

$ mongo --host localhost --ssl --sslPEMKeyFile client.pem --sslCAFile ca.crt 

НО: когда я пытаюсь подключиться с другого компьютера с тем же CERTS она не соединится:

$ mongo --host mongo1.mydomain.net --ssl --sslPEMKeyFile client.pem --sslCAFile ca.crt 

MongoDB shell version: 3.2.9 
connecting to: <ip>:27017/test 
2016-08-22T22:29:17.632+0200 W NETWORK [thread1] Failed to connect to <ip>:27017 after 5000 milliseconds, giving up. 
2016-08-22T22:29:17.633+0200 E QUERY [thread1] Error: couldn't connect to server <ip>:27017, connection attempt failed : 
[email protected]/mongo/shell/mongo.js:231:14 
@(connect):1:6 

Это странно, потому что /var/log/mongodb/mongd.log говорит, что mongod является listining на порт 27017 для SSL соединений (NetStat говорит то же самое):

2016-08-22T21:09:10.182+0200 I FTDC  [initandlisten] Initializing full-time diagnostic data capture with directory '/var/lib/mongodb/diagnostic.data' 
2016-08-22T21:09:10.182+0200 I NETWORK [HostnameCanonicalizationWorker] Starting hostname canonicalization worker 
2016-08-22T21:09:10.183+0200 I NETWORK [initandlisten] waiting for connections on port 27017 ssl 

попытка подключения SSL с другой машины не отображается в файле журнала, что еще более странно.

Я спросил ТСРйитр:

23:10:32.984067 IP (tos 0x0, ttl 51, id 64132, offset 0, flags [DF], proto TCP (6), length 60) 
    <other_machine>.39644 > 172.12.51.23.27017: Flags [S], cksum 0xd3d0 (correct), seq 1809185188, win 29200, options [mss 1420,sackOK,TS val 7275296 ecr 0,nop,wscale 7], length 0 
23:10:32.984112 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 60) 
    172.12.51.23.27017 > <other_machine>.39644: Flags [S.], cksum 0x9506 (incorrect -> 0x14cf), seq 2653469724, ack 1809185189, win 28960, options [mss 1460,sackOK,TS val 93151206 ecr 7275296,nop,wscale 7], length 0 
23:10:33.041545 IP (tos 0x0, ttl 51, id 64133, offset 0, flags [DF], proto TCP (6), length 52) 
    <other_machine>.39644 > 172.12.51.23.27017: Flags [.], cksum 0xb3c5 (correct), seq 1, ack 1, win 229, options [nop,nop,TS val 7275313 ecr 93151206], length 0 
23:10:33.047713 IP (tos 0x0, ttl 63, id 49309, offset 0, flags [none], proto TCP (6), length 40) 
    <other_machine>.39644 > 172.12.51.23.27017: Flags [R.], cksum 0x55ec (correct), seq 1, ack 1, win 229, length 0 

Первый ответ от сервера Монго имеет всегда недопустимое контрольную сумму. Но я действительно не знаю, важно это или нет. На самом деле я понятия не имею, как это решить, я просто надеюсь, что кто-нибудь может помочь мне с намеком.

веселит, dymat

ответ

0

Спасибо Мехмет!

Это была моя первая идея. Но после разговора с системным администратором оказалось, что они установили брандмауэр приложения, который классифицировал запросы SSL на порт 27017 как , а не, принадлежащий серверу mongodb. Брандмауэр ожидал незашифрованного трафика на порте 27017.

После того как они переконфигурировали брандмауэр, все работает так, как предполагается.

Bye, dymat

0

имя хоста в сертификате может отличаться от той, которая используется в команде Монго. Попробуйте добавить параметр -sslAllowInvalidHostnames param в конце команды mongo.

mongo --host mongo1.mydomain.net --ssl --sslPEMKeyFile client.pem --sslCAFile ca.crt --sslAllowInvalidHostnames 

Смотрите варианты MongoDB соединений на https://docs.mongodb.com/manual/reference/program/mongotop/#cmdoption--sslAllowInvalidHostnames

+0

ссылки на внешние ресурсы, рекомендуется, но, пожалуйста, добавить контекст вокруг ссылки, так что ваши коллеги пользователи будут иметь некоторое представление о том, что это такое и почему он там. Всегда указывайте наиболее значимую часть важной ссылки, если целевой сайт недоступен или постоянно находится в автономном режиме. – pableiros