前面有讲到如果使用docker-compose快速部署一个zabbix系统,但是部署的zabbix系统是使用http协议进行访问的。有时候为了保证安全。我们需要配置使用https协议进行访问。
下面就讲述如何使用自签名的ssl证书配置https访问。
注:若是有签发的证书,也可使用配置,无须自己生成自签名证书。
文章是说明ZABBIX官方镜像如何配置https访问,所以要使用ZABBIX官方提供的zabbix docker镜像来部署的zabbix监控系统。
首先,先生成自签名证书。这里提供一个快速生成证书的脚本。
执行脚本需要输入一个IP的参数
然后会在脚本所在目录下面生成名为ssl.crt的证书和ssl.key的密钥。
#!/bin/bash
baseshell=$(cd $(dirname $0);pwd)
# 变量定义
IP=$1
# 生成证书配置文件
cat > ${baseshell}/ssl.cnf << EOF
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
C = CN
ST = GD
L = GZ
O = EDGE
OU = BASE
CN = $IP
[v3_req]
keyUsage = critical, digitalSignature, keyAgreement
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = $IP
DNS.2 = 8.8.8.8
IP.1 = $IP
EOF
# 生成crt和key证书
openssl req -x509 -nodes -days 9999 -newkey rsa:2048 -keyout ${baseshell}/ssl.key -out ${baseshell}/ssl.crt -config ${baseshell}/ssl.cnf -sha256

然后使用openssl生成dhparam证书。
openssl dhparam -out dhparam.pem 2048

然后就需要将ssl证书和dhparam证书一共挂载进ZABBIX WEB镜像里面,随后重启即可生效。
l 若是zabbix系统使用docker-compose部署。
可参考文章:使用docker-compose部署zabbix监控系统
则修改对应的docker-compose.yaml文件,如:

修改完后,直接使用命令:
docker-compose up –d
重新创建容器即可生效
l 若是zabbix系统直接使用docker命令启动。
可参考文章:如何使用docker快速部署zabbix监控系统
则需重新创建ZABBIX WEB容器,如:
先删除旧容器,删除命令:
docker rm -f 容器名
然后重新创建容器命令:
docker run --name zabbix-web -e ZBX_SERVER_HOST=192.168.75.31 -e ZBX_SERVER_PORT=10051 -e DB_SERVER_HOST=192.168.75.31 -e DB_SERVER_PORT=3306 -e MYSQL_DATABASE=zabbix -e MYSQL_USER=root -e MYSQL_PASSWORD=zabbix -p 48080:8080 -p 48443:8443 –v /data/zabbix/ssl:/etc/ssl/nginx -d zabbix/zabbix-web-nginx-mysql:latest
挂载容器参数解释:–v ./ssl:/etc/ssl/nginx
-v ——指启用卷挂载,格式:宿主机目录(文件)/容器目录(文件)
/data/zabbix/ssl:/etc/ssl/nginx ——指,将宿主机/data/zabbix/ssl目录挂载到容器的/etc/ssl/nginx目录
配置好,重新创建容器后,查看容器日志:
docker logs -f 容器名(容器ID)
可以看到,已经启用了SSL

最后到浏览器进行访问测试:
https://IP:PORT

错误信息