配置

创建证书

  1. 创建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"
  1. 创建生成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
  1. 生成密钥文件
openssl req -newkey rsa:2048 -nodes  -keyout glusterfs_private.pem  -out glusterfs.csr -config glusterfs-csr.txt
  1. 生成公钥文件
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协议进行交互

Image.png

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

Image.png

其他说明:

验证服务端TLS启用时候成功

openssl s_client -connect 1.1.1.1:53968 -showcerts

SSL - Gluster Docs