zabbix使用SSL证书实现https登陆

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

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

zabbix使用SSL证书实现https登陆

详细的安装方法见官方文档:
https://www.zabbix.com/download?zabbix=5.0&os_distribution=centos&os_version=7&db=mysql&ws=nginxnginx

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

Nginx的SSL模块安装

查看 nginx 是否安装 http_ssl_module 模块。算法

/usr/sbin/nginx -V

若是出现 configure arguments: –with-http_ssl_module, 则已安装sql

zabbix使用SSL证书实现https登陆

我采用yum安装的nginx,自带ssl模块。由于nginx不能动态更新模块,须要加载模块的时候,须要从新编译安装。vim

每次添加新模块,必定要把之前编译过的模块一同加到configure参数里面
每次添加新模块,要先记录之前的配置。centos

编译安装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 []:49029333@qq.com   #邮箱

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登陆

到此证书安装完毕

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

相关文章
相关标签/搜索