GlusterFS SSL 不起作用

GlusterFS SSL 不起作用

我已经尝试了几个小时让 GlusterFS SSL 在管理和 I/O 路径上工作但没有成功,所以我希望你能帮助我。

我已经尝试过这个简单的方法:

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

当我尝试在 I/O 路径上启用 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。

我也尝试创建密钥长度为 2048 的 RSA 密钥,但没有成功。

我没什么主意了,我不知道这个错误在 GlusterFS 上下文中意味着什么:

SSL3_GET_RECORD:wrong version number

免责声明:我正在运行 CentOS 7 64 位和 GlusterFS 3.11.3(撰写本文时的最新版本)。

答案1

花了几个小时试图找出证书的问题后,我发现,就我而言,问题出在了一个愚蠢的错误上:我没有重新启动glusterd托管砖块的两台服务器中的一台。因此,两台服务器的配置完全相同,但其中一台不知道新的 SSL 配置。

如果你遇到同样的问题,首先要service glusterd restart在所有节点上运行。如果不行,另一个答案,以及错误报告可能会有帮助。

答案2

我已经通过这种方式修复了这个问题(仅适用于 I/O 路径 SSL 支持)... 中显示的密码列表GlusterFS 教程结果没有起作用,我现在设置了以下内容:

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

此外,我没有连接来自服务器的 .pem 文件,而是创建了自己的自签名 CA,如上面更复杂的示例所示。以这种方式创建的 .ca 文件在所有对等点上都必须相同,并且当它用于签署 glusterfs.pem 文件时,不需要连接证书。

这是我的完整音量配置:

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:版本号错误) 现在仅在使用 I/O 路径上的 SSL 时才得到修复。当我在管理路径上启用 SSL 时,问题仍然存在,但我不知道如何修改密码列表以应用相同的修复。

附注:GlusterFS SSL 教程似乎已经过时了。其中还提到 /etc/ssl/glusterfs.* 是硬编码文件位置,但至少对于 I/O 路径上的 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

我发现这些选项在Gluster 源

PS:我今天也升级到了 GlusterFS 3.12.0(修复之后!)

相关内容