Zabbix recommande d'utiliser le serveur nginx, qui a des performances plus élevées. Afin de garantir un accès sécurisé, https doit maintenant être configuré, principalement pour configurer le module ssl de nginx, et pour générer un fichier de certificat correspondant à zabbix-server
Zabbix5.0 a déjà été installé et l'environnement de configuration sélectionné est le suivant:
Pour la méthode d'installation détaillée, veuillez vous référer au document officiel:
https://www.zabbix.com/download?zabbix=5.0&os_distribution=centos&os_version=7&db=mysql&ws=nginx
Notez que la version de nginx que j'ai utilisée est incompatible avec la version recommandée, veuillez configurer nginx en fonction de la situation réelle
Installation du module SSL Nginx
Vérifiez si nginx installe le module http_ssl_module.
/usr/sbin/nginx -V
Si configurez les arguments: --with-http_ssl_module apparaît, il est installé
J'utilise nginx installé par yum, avec son propre module ssl. Comme nginx ne peut pas mettre à jour dynamiquement les modules, lorsque des modules doivent être chargés, ils doivent être recompilés et installés.
Chaque fois que vous ajoutez un nouveau module, vous devez ajouter le module précédemment compilé au paramètre configure.
Chaque fois que vous ajoutez un nouveau module, vous devez d'abord enregistrer la configuration précédente.
Il existe de nombreux tutoriels en ligne pour compiler et installer nginx.
Utilisez opnenssl pour générer un certificat
Vous pouvez demander un certificat gratuitement ou payant auprès d'un grand fabricant de cloud computing. Voici comment Alibaba Cloud peut demander un certificat gratuitement
https://common-buy.aliyun.com/?spm=5176.15089375.4329286700.5.33ca1232so4ULs&commodityCode=cas#/buy Le
certificat est généralement valide pendant environ un an.
Cependant, le certificat doit être lié au nom de domaine et doit être strictement revu. Il ne convient pas à notre intranet.
Nous pouvons également utiliser openssl pour générer des informations de certificat gratuitement, mais c'est un peu gênant.
Créer un nouveau répertoire pour enregistrer les informations de certificat
mkdir /etc/nginx/ssl
cd /etc/nginx/ssl
Utilisez l'outil openssl pour générer une clé privée RSA
Vérifiez d'abord si l'outil openssl a été installé
openssl version
En général, centos est livré avec des outils openssl, sinon, veuillez vous rendre sur le site officiel http://www.openssl.org pour télécharger et installer.
Générer la clé privée RSA
openssl genrsa -des3 -out server.key 2048
Comme ci-dessus: des3 est l'algorithme, force de 2048 bits (pour la confidentialité). server.key est le nom du fichier de clé -out signifie: le chemin et le nom du fichier généré.
Phrase de cryptage, ce que je configure ici est 123456
Afficher la clé privée générée
openssl rsa -text -in server.key
Afficher la clé générée
cat server.key
Créer un fichier CSR de demande de signature de certificat
Fichier CSR (Certificate Signing Request) Avant de demander un certificat numérique, le fichier clé et le fichier CSR du certificat doivent être générés. Le fichier CSR est le fichier d'origine de votre certificat de clé publique, qui contient des informations sur le serveur et des informations sur l'unité, et doit être soumis au centre de certification de l'autorité de certification pour examen.
Utilisez la commande suivante
openssl req -new -key server.key -out server.csr
La description:
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 []: #无需填写
Après l'opération ci-dessus, les deux fichiers suivants seront générés dans le répertoire courant:
server.key server.csr
Afficher le fichier csr
openssl req -text -in server.csr -noout
Générer un certificat CA
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
La signification de x509: la signification du format spécifié -
in: la signification du
fichier de demande spécifié - signkey: auto-signé
-jours: période valide, je configure 3650 jours, dix ans
server.crt est les informations de certificat du serveur
Décollez la phrase de passe PEM
Après avoir défini la phrase de passe PEM (mot de passe crypté) de la clé, cette situation peut être que le paramètre de mot de passe est écrit dans le fichier de clé lors de la définition de la clé de clé privée, ce qui oblige la série de serveurs Nginx / Apache à exiger la saisie de la phrase de passe PEM au démarrage. En conséquence, le démarrage échoue. Nous devons supprimer le mot de passe et utiliser la commande OpenSSL suivante pour générer le fichier server.key.unsecure
openssl rsa -in server.key -out server.key.unsecure
Il est recommandé de ne pas avoir besoin d'un environnement simple pour ajouter un mot de passe à la clé de certificat ou quelque chose qui est sujet à des problèmes
Étant donné que https est généralement une authentification unidirectionnelle, un environnement simple n'a pas besoin d'utiliser l'authentification bidirectionnelle, pas besoin de générer un certificat client
Si vous devez générer un certificat client, cela revient à générer un certificat 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 configurer ssl
Commencez par modifier /etc/nginx/ngnix.conf, commentez le serveur 80, afin de ne pas accéder à zabbix-web via le port 80
cd /etc/nginx/
cp nginx.conf nginx.conf.bak
vim nginx.conf
Sauvegardez le fichier de configuration avant la modification
Utilisez la commande nginx -t pour vérifier si la syntaxe du fichier de configuration est correcte après modification
Configurez zabbix.conf sous le chemin /etc/nginx/conf.d, qui est la configuration de https
touch /etc/nginx/conf.d/zabbix.conf
Modifiez comme suit
Voici les principaux fichiers de configuration
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;
Ensuite, utilisez nginx -t pour vérifier la syntaxe et redémarrez nginx s'il n'y a pas de problème
Si nginx démarre normalement, accéder à nouveau à zabbix consiste à utiliser https
Vérifier les informations du certificat
À ce stade, le certificat est installé
Je ne sais pas si c'est utile, mais le client m'a dupé. Le fichu NSFOCUS ne dira plus jamais que mon site Web n'est plus sécurisé, hahaha