Вопрос:

Почему mongodb отказывается от ssl-соединений?

mongodb ssl firewall

1199 просмотра

2 ответа

16 Репутация автора

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

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

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

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

$ 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 :
connect@src/mongo/shell/mongo.js:231:14
@(connect):1:6

Это странно, потому что /var/log/mongodb/mongd.log говорит, что mongod выводит список на порт 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 с другого компьютера не указана в файле журнала, что еще более странно.

Поэтому я спросил tcpdump:

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 Источник Размещён: 22.08.2016 09:21

Ответы (2)


0 плюса

54 Репутация автора

Имя хоста в сертификате может отличаться от имени, используемого в команде mongo. Попробуйте добавить параметр --sslAllowInvalidHostnames в конце команды 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.

Автор: Mehmet Aydoğdu Размещён: 30.11.2016 07:57

0 плюса

16 Репутация автора

Решение

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

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

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

Пока, Дымать

Автор: dymat Размещён: 18.12.2016 09:36
Вопросы из категории :
32x32