![GlusterFS SSL 不起作用](https://linux22.com/image/709817/GlusterFS%20SSL%20%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我已经尝试了几个小时让 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
答案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(修复之后!)