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的方式了
檢查證書信息
到此證書安裝完畢
有沒有用,我不知道,可是客戶那裏糊弄過去了,該死的綠盟不再會說個人網站是不安全的了,哈哈哈