Назад | Перейти на главную страницу

GlusterFS SSL не работает

Я часами безуспешно пытался заставить GlusterFS SSL работать с управлением и путями ввода-вывода, поэтому я надеюсь, что вы можете мне помочь.

Я попробовал простой способ:

openssl genrsa -out glusterfs.key 4096
openssl req -new -x509 -key glusterfs.key -subj "/CN=Anyone" -out glusterfs.pem

Затем я соединил glusterfs.pem со всех узлов в glusterfs.ca и распространил glusterfs.ca на все узлы. Существуют следующие файлы:

/etc/ssl/glusterfs.key
/etc/ssl/glusterfs.pem
/etc/ssl/glusterfs.ca

Я создал файл для включения SSL в пути управления и перезапустил glusterd.

touch /var/lib/glusterd/secure-access
systemctl restart glusterd

Мой glusterd.log теперь регистрирует сотни записей (десятки в минуту), показывающих ошибку SSL:

[2017-08-29 22:01:07.535725] E [socket.c:202:ssl_dump_error_stack] 0-socket.management:   error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
[2017-08-29 22:01:07.535760] E [socket.c:2519:socket_poller] 0-socket.management: server setup failed

Та же ошибка возникает в журнале тома, когда я пытаюсь включить SSL на пути ввода-вывода, и такая же ошибка возникает, когда я пробую более сложный способ создания файлов glusterfs. *. Пример:

openssl genrsa 4096 > glusterfs.ca.key
openssl req -sha1 -new -x509 -nodes -days 3650 -key glusterfs.ca.key > glusterfs.ca
openssl req -sha1 -newkey rsa:4096 -days 1825 -nodes -keyout glusterfs.key > glusterfs-req.pem
openssl rsa -in glusterfs.key -out glusterfs.key
openssl x509 -sha1 -req -in glusterfs-req.pem -days 1825  -CA glusterfs.ca -CAkey glusterfs.ca.key -set_serial 01 > glusterfs.pem
openssl verify -CAfile glusterfs.ca glusterfs.pem

Но это приводит к той же ошибке, что и показанная выше, независимо от того, какой CN и т. Д. Я установил, и независимо от того, устанавливаю ли я тот же или другой CN на узлах.

Я также попытался создать ключи RSA с длиной ключа 2048, но безрезультатно.

У меня заканчиваются идеи, и я не знаю, что означает эта ошибка в контексте GlusterFS:

SSL3_GET_RECORD:wrong version number

Отказ от ответственности: я использую 64-разрядную версию CentOS 7 и GlusterFS 3.11.3 (последняя версия на момент написания этой статьи).

Я решил проблему таким образом (только для поддержки SSL пути ввода-вывода) ... список шифров, показанный в учебнике GlusterFS (https://gluster.readthedocs.io/en/latest/Administrator%20Guide/SSL/) не сработало, и теперь я установил следующее:

gluster volume set mailrep-volume ssl.cipher-list 'HIGH:!SSLv2:!SSLv3:!TLSv1:!TLSv1.1:TLSv1.2:!3DES:!RC4:!aNULL:!ADH'

Кроме того, я не объединял файлы .pem с серверов, а вместо этого создал свой собственный самозаверяющий центр сертификации, как показано в более сложном примере выше. Файл .ca, созданный таким образом, должен быть одинаковым на всех узлах, и когда он используется для подписи файлов glusterfs.pem, сертификаты concat не требуются.

Это моя полная конфигурация тома:

Volume Name: mailrep-volume
Type: Replicate
Volume ID: 907250fb-d83e-4fe7-a63b-636d952095ff
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: eris:/mnt/glusterfs/vmail
Brick2: orcus:/mnt/glusterfs/vmail
Options Reconfigured:
ssl.cipher-list: HIGH:!SSLv2:!SSLv3:!TLSv1:!TLSv1.1:TLSv1.2:!3DES:!RC4:!aNULL:!ADH
nfs.disable: on
transport.address-family: inet
client.ssl: on
server.ssl: on
auth.ssl-allow: eris,orcus

Чтобы убедиться, что я могу сделать ... (1) и посмотреть ... (2)

(1) cat /var/log/glusterfs/glustershd.log | grep SSL
(2) 0-mailrep-volume-client-1: SSL support on the I/O path is ENABLED
(2) 1-mailrep-volume-client-1: SSL support on the I/O path is ENABLED

Ошибка сверху (SSL3_GET_RECORD: неправильный номер версии) теперь исправлена ​​ТОЛЬКО при использовании SSL на пути ввода-вывода. Проблема все еще существует, когда я включаю SSL на пути управления, но я не знаю, как изменить списки шифров, чтобы применить то же исправление.

Небольшое примечание: учебник по GlusterFS SSL кажется ужасно устаревшим. Также указано, что /etc/ssl/glusterfs.* - это жестко заданные местоположения файлов, но, по крайней мере, для SSL на пути ввода-вывода вы можете легко применить настраиваемые местоположения таким образом (проверено и сработало):

gluster volume set mailrep-volume ssl.private-key /path/to/your/certkey
gluster volume set mailrep-volume ssl.own-cert /path/to/your/certfile
gluster volume set mailrep-volume ssl.ca-list /path/to/your/cafile

Я нашел эти варианты в источнике здесь https://github.com/gluster/glusterfs/blob/master/tests/features/ssl-ciphers.t

PS: Я также обновился до GlusterFS 3.12.0 сегодня (после исправления!)