zabbix推荐使用nginx服务器,性能较高。为了知足安全访问,如今须要配置https,主要是对nginx的ssl模块进行配置,还要生成zabbix-server对应的证书文件php
以前已经安装过zabbix5.0,选择的配置环境以下:mysql
详细的安装方法见官方文档:
https://www.zabbix.com/download?zabbix=5.0&os_distribution=centos&os_version=7&db=mysql&ws=nginxnginx
注意,我采用的nginx版本与推荐安装的版本不一致,请以实际状况配置nginxweb
查看 nginx 是否安装 http_ssl_module 模块。算法
/usr/sbin/nginx -V
若是出现 configure arguments: –with-http_ssl_module, 则已安装sql
我采用yum安装的nginx,自带ssl模块。由于nginx不能动态更新模块,须要加载模块的时候,须要从新编译安装。vim
每次添加新模块,必定要把之前编译过的模块一同加到configure参数里面
每次添加新模块,要先记录之前的配置。centos
编译安装nginx,网上教程不少。缓存
能够在个大云计算厂家免费或者有偿申请证书。如下是阿里云免费申请证书方式
https://common-buy.aliyun.com/?spm=5176.15089375.4329286700.5.33ca1232so4ULs&commodityCode=cas#/buy
证书通常有效期一年左右。
可是证书必定要跟域名绑定,并且须要严格审核。并不适合咱们内网使用。安全
咱们也能够用openssl来免费生成证书信息,可是就是有点麻烦。
新建一个目录专门保存证书信息
mkdir /etc/nginx/ssl cd /etc/nginx/ssl
首先确认是否已经安装openssl工具
openssl version
通常centos都自带openssl工具,若是没有,请到http://www.openssl.org 官方网站下载安装。
生成rsa私钥
openssl genrsa -des3 -out server.key 2048
如上:des3 是算法,2048位强度(为了保密性)。 server.key 是密钥文件名 -out的含义是:指生成文件的路径和名称。
加密短语,我这里配置的是123456
查看生成的私钥
openssl rsa -text -in server.key
查看生成密钥
cat server.key
CSR(Certificate Signing Request)文件,申请数字证书以前,必须先生成证书的密钥文件和CSR文件。CSR文件是您的公钥证书原始文件,包含了服务器信息和的单位信息,须要提交给CA认证中心进行审核。
使用以下命令
openssl req -new -key server.key -out server.csr
说明:
Enter pass phrase for server.key: #123456 You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:CN # 输入国家代码,中国填写 CN State or Province Name (full name) []:hubei #省份 Locality Name (eg, city) [Default City]:wuhan #城市 Organization Name (eg, company) [Default Company Ltd]:ctbt #公司名 瞎填 Organizational Unit Name (eg, section) []:ops #部门瞎填 Common Name (eg, your name or your server's hostname) []:172.31.208.128 #域名,没有域名,我用IP地址 Email Address []:49029333@qq.com #邮箱 Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: #无需填写
如上操做后,会在当前目录下生成如下两个文件:
server.key server.csr
查看csr文件
openssl req -text -in server.csr -noout
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
x509的含义: 指定格式
-in的含义: 指定请求文件
-signkey的含义: 自签名
-days:有效期,我配置3650天,十年
server.crt就是服务器证书信息
在设置了key的PEM pass phrase(加密密码)后,这种状况多是在设置私钥key时将密码设置写入了key文件,致使Nginx/Apache等系列服务器在启动时要求Enter PEM pass phrase,从而致使启动失败咱们须要作的是剥离这个密码,利用以下OpenSSL命令生成server.key.unsecure文件
openssl rsa -in server.key -out server.key.unsecure
建议简单环境,就别给证书密钥啥的再加密码,及其容易出问题
由于https通常单向认证便可,简单环境无需使用双向认证,无需生成客户端证书
若是须要生成客户端证书,与生成ca证书类似
openssl genrsa -out client.key 2048 openssl req -new -key client.key -out client.csr openssl x509 -req -days 3650 -in client.csr -signkey client.key -out client.crt
首先编辑/etc/nginx/ngnix.conf,注释掉server 80,这样就不会经过80端口访问zabbix-web
cd /etc/nginx/ cp nginx.conf nginx.conf.bak vim nginx.conf
修改前先备份配置文件
使用nginx -t命令检查修改后配置文件语法是否正确
在/etc/nginx/conf.d路径下配置zabbix.conf,为https的配置
touch /etc/nginx/conf.d/zabbix.conf
按照以下进行编辑
如下为关键配置文件
server { listen 80; server_name 172.31.208.128; return 301 https://172.31.208/128$request_uri; } server { listen 443 ssl; ssl_certificate ssl/server.crt; #证书文件 #ssl_certificate_key ssl/server.key; #密钥文件 ssl_certificate_key ssl/server.key.unsecure; #剥离密码的密钥文件,若是没有对密钥加密,直接使用server.key ssl_session_timeout 5m; #缓存有效期 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #使用加密算法 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #安全链接的可选加密协议 ssl_prefer_server_ciphers on; #使用服务器的首选算法 root /usr/share/zabbix; index index.php;
而后用nginx -t检查语法 没有问题的话 重启nginx
若是nginx启动正常,那么再次访问zabbix就是用https的方式了
检查证书信息
到此证书安装完毕
有没有用,我不知道,可是客户那里糊弄过去了,该死的绿盟不再会说个人网站是不安全的了,哈哈哈