配置
创建证书
- 创建CA证书私钥和公钥
openssl req -newkey rsa:2048 -nodes -keyout ca_rsa_private.pem -x509 -days 36500 -out ca.crt -subj "/C=SG/ST=BJ/L=BJ/O=COM/OU=NSP/CN=CA/emailAddress=rhb@wiz.ai"
- 创建生成glusterfs证书的请求文件
cat >> ./glusterfs-csr.txt <<-'EOF'
[ req ]
default_bits = 2048
default_md = sha256
distinguished_name = req_distinguished_name
req_extensions = req_ext
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = SG
organizationName = Organization Name (eg, company)
commonName = Common Name (e.g. server FQDN or YOUR name)
commonName_default = wiz.ai
[ req_ext ]
subjectAltName = @alt_names
[ alt_names ]
IP.1 = 1.1.1.1 #要把glusterfs 的服务端和客户端地址都签署进去
IP.2 = 2.2.2.2
EOF
- 生成密钥文件
openssl req -newkey rsa:2048 -nodes -keyout glusterfs_private.pem -out glusterfs.csr -config glusterfs-csr.txt
- 生成公钥文件
openssl x509 -req -days 36500 -in glusterfs.csr -CA ca.crt -CAkey ca_rsa_private.pem -CAcreateserial -out glusterfs.crt -extensions req_ext --extfile glusterfs-csr.txt
配置Glusterfs 服务端
配置证书
cat glusterfs_private.pem > /etc/ssl/glusterfs.pem
cat glusterfs.crt > /etc/ssl/glusterfs.key
cat ca.crt > /etc/ssl/
cat glusterfs_private.pem glusterfs.crt >> /etc/pki/tls/glusterfs.pem
touch /var/lib/glusterd/secure-access
systemctl restart glusterd
配置卷
mkdir /data/glfs/zsf
gluster volume create gl-data-zsf 1.1.1.1:/data/glfs/zsf force
gluster volume set gl-data-zsf ctime off
gluster volume set gl-data-zsf client.ssl on
gluster volume set gl-data-zsf server.ssl on
gluster volume set gl-data-zsf auth.ssl-allow "1.1.1.1,2.2.2.2" #允许哪些地址挂载,可以使用*匹配所有地址
gluster volume start gl-data-zsf
配置glusterfs client
配置证书文件
cat glusterfs_private.pem glusterfs.crt >> /etc/pki/tls/glusterfs.pem
touch /var/lib/glusterd/secure-access
在客户端机器上信任自签的CA证书
下面是针对Redhat操作系统,如果是其他OS请自行查找方法
把ca 证书拷贝到 /usr/share/pki/ca-trust-source/anchors/ 目录下
然后执行 update-ca-trust extract
挂载目录
mount.glusterfs 1.1.1.1:gl-data-zsf /mnt/
截止到目前为止Glusterfs的客户端挂载启用TLS已经完成;
验证
查看gluster volume 所使用的端口
gluster volume status gl-data-zsf
使用TCPdump抓包
tcpdump -i any port ${PORT} -w 1.pcap
查看抓包文件,可以看到已经使用TLS协议进行交互

如果没有开启TLS成功,抓包应该是下面这种

其他说明:
验证服务端TLS启用时候成功
openssl s_client -connect 1.1.1.1:53968 -showcerts
















