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

到此證書安裝完畢

有沒有用,我不知道,可是客戶那裏糊弄過去了,該死的綠盟不再會說個人網站是不安全的了,哈哈哈

相關文章
相關標籤/搜索