运维开发网
广告位招商联系QQ:123077622
 
广告位招商联系QQ:123077622

zabbix使用SSL证书实现https登录

运维开发网 https://www.qedev.com 2020-11-01 12:55 出处:51CTO 作者:羊草
zabbix推荐使用nginx服务器,性能较高。为了满足安全访问,现在需要配置https,主要是对nginx的ssl模块进行配置,还要生成zabbix-server对应的证书文件之前已经安装过zabbix5.0,选择的配置环境如下:详细的安装方法见官方文档:https://www.zabbix.com/download?zabbix=5.0&os_distribution=centos&a

zabbix推荐使用nginx服务器,性能较高。为了满足安全访问,现在需要配置https,主要是对nginx的ssl模块进行配置,还要生成zabbix-server对应的证书文件

之前已经安装过zabbix5.0,选择的配置环境如下:

zabbix使用SSL证书实现https登录

详细的安装方法见官方文档:

https://www.zabbix.com/download?zabbix=5.0&os_distribution=centos&os_version=7&db=mysql&ws=nginx

注意,我采用的nginx版本与推荐安装的版本不一致,请以实际情况配置nginx

Nginx的SSL模块安装

查看 nginx 是否安装 http_ssl_module 模块。

/usr/sbin/nginx -V

如果出现 configure arguments: –with-http_ssl_module, 则已安装

zabbix使用SSL证书实现https登录

我采用yum安装的nginx,自带ssl模块。因为nginx不能动态更新模块,需要加载模块的时候,需要重新编译安装。

每次添加新模块,一定要把以前编译过的模块一同加到configure参数里面

每次添加新模块,要先记录以前的配置。

编译安装nginx,网上教程很多。

使用opnenssl生成证书

可以在个大云计算厂家免费或者有偿申请证书。以下是阿里云免费申请证书方式

https://common-buy.aliyun.com/?spm=5176.15089375.4329286700.5.33ca1232so4ULs&commodityCode=cas#/buy

证书一般有效期一年左右。

但是证书一定要跟域名绑定,而且需要严格审核。并不适合我们内网使用。

我们也可以用openssl来免费生成证书信息,但是就是有点麻烦。

新建一个目录专门保存证书信息

mkdir /etc/nginx/ssl
cd /etc/nginx/ssl

使用openssl工具生成一个RSA私钥

首先确认是否已经安装openssl工具

openssl version

zabbix使用SSL证书实现https登录

一般centos都自带openssl工具,如果没有,请到http://www.openssl.org 官方网站下载安装。

生成rsa私钥

openssl genrsa -des3 -out server.key 2048

如上:des3 是算法,2048位强度(为了保密性)。 server.key 是密钥文件名 -out的含义是:指生成文件的路径和名称。

zabbix使用SSL证书实现https登录

加密短语,我这里配置的是123456

查看生成的私钥

openssl rsa -text -in server.key

zabbix使用SSL证书实现https登录

查看生成密钥

cat server.key

zabbix使用SSL证书实现https登录

创建证书签名请求CSR文件

CSR(Certificate Signing Request)文件,申请数字证书之前,必须先生成证书的密钥文件和CSR文件。CSR文件是您的公钥证书原始文件,包含了服务器信息和的单位信息,需要提交给CA认证中心进行审核。

使用如下命令

openssl req -new -key server.key -out server.csr

zabbix使用SSL证书实现https登录

说明:

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 []:[email protected]   #邮箱

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:  #无需填写

如上操作后,会在当前目录下生成以下两个文件:

server.key server.csr

zabbix使用SSL证书实现https登录

查看csr文件

openssl req -text -in server.csr -noout

zabbix使用SSL证书实现https登录

生成CA证书

openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt

x509的含义: 指定格式

-in的含义: 指定请求文件

-signkey的含义: 自签名

-days:有效期,我配置3650天,十年

zabbix使用SSL证书实现https登录

server.crt就是服务器证书信息

剥离PEM pass phrase

在设置了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

nginx配置ssl

首先编辑/etc/nginx/ngnix.conf,注释掉server 80,这样就不会通过80端口访问zabbix-web

cd /etc/nginx/
cp nginx.conf nginx.conf.bak
vim nginx.conf

修改前先备份配置文件

zabbix使用SSL证书实现https登录

使用nginx -t命令检查修改后配置文件语法是否正确

zabbix使用SSL证书实现https登录

在/etc/nginx/conf.d路径下配置zabbix.conf,为https的配置

touch /etc/nginx/conf.d/zabbix.conf

按照如下进行编辑

zabbix使用SSL证书实现https登录

以下为关键配置文件

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的方式了

zabbix使用SSL证书实现https登录

zabbix使用SSL证书实现https登录

检查证书信息

zabbix使用SSL证书实现https登录

zabbix使用SSL证书实现https登录

到此证书安装完毕

有没有用,我不知道,但是客户那里糊弄过去了,该死的绿盟再也不会说我的网站是不安全的了,哈哈哈

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号