Zabbixは、パフォーマンスの高いnginxサーバーの使用を推奨しています。安全なアクセスを満たすために、主にnginxのsslモジュールを構成し、zabbix-serverに対応する証明書ファイルを生成するためにhttpsを構成する必要があります。
Zabbix 5.0は以前にインストールされており、選択した構成環境は次のとおりです。
詳細なインストール方法については、公式ドキュメントを参照してください:https:
//www.zabbix.com/download?zabbix = 5.0&os_distribution = centos&os_version = 7&db = mysql&ws = nginx
使用したnginxのバージョンが推奨バージョンと一致しないことに注意してください。実際の状況に応じてnginxを構成してください。
NginxSSLモジュールのインストール
nginxがhttp_ssl_moduleモジュールをインストールするかどうかを確認します。
/usr/sbin/nginx -V
configure引数の場合:-with-http_ssl_moduleが表示され、インストールされます
私はyumによってインストールされたnginxを独自のsslモジュールとともに使用します。nginxはモジュールを動的に更新できないため、モジュールをロードする必要がある場合は、再コンパイルしてインストールする必要があります。
新しいモジュールを追加するたびに、以前にコンパイルしたモジュールをconfigureパラメーターに
追加する必要があります。新しいモジュールを追加するたびに、最初に以前の構成を記録する必要があります。
nginxをコンパイルしてインストールするための多くのオンラインチュートリアルがあります。
opnensslを使用して証明書を生成します
証明書は、無料または大規模なクラウドコンピューティングメーカーで有料で申請できます。以下は、AlibabaCloudが無料で証明書を申請する方法です
https://common-buy.aliyun.com/?spm=5176.15089375.4329286700.5.33ca1232so4ULs&commodityCode=cas#/buy
証明書は通常約1年間有効です。
ただし、証明書はドメイン名にバインドされている必要があり、厳密に確認する必要があります。イントラネットには適していません。
opensslを使用して証明書情報を無料で生成することもできますが、少し面倒です。
証明書情報を保存するための新しいディレクトリを作成します
mkdir /etc/nginx/ssl
cd /etc/nginx/ssl
opensslツールを使用してRSA秘密鍵を生成します
まず、opensslツールがインストールされているかどうかを確認します
openssl version
通常、centosにはopensslツールが付属していますが、そうでない場合は、http://www.openssl.orgの公式Webサイトにアクセスしてダウンロードしてインストールしてください。
rsa秘密鍵を生成する
openssl genrsa -des3 -out server.key 2048
上記のように:des3はアルゴリズムであり、2048ビット強度(機密性のため)です。server.keyは、キーファイルの名前です。-outは、生成されたファイルのパスと名前を意味します。
暗号化フレーズ、ここで構成するのは123456です
生成された秘密鍵を表示する
openssl rsa -text -in server.key
生成されたキーを表示
cat server.key
証明書署名要求CSRファイルを作成する
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 []:[email protected] #邮箱
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: #无需填写
上記の操作の後、次の2つのファイルが現在のディレクトリに生成されます。
server.key server.csr
csrファイルを表示
openssl req -text -in server.csr -noout
CA証明書を生成する
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
x509の意味
:指定された
形式の意味-入力:指定された要求ファイルの意味-signkey:自己署名
-日:有効期間、3650日、10年を構成します
server.crtはサーバー証明書情報です
PEMパスフレーズをはがす
キーのPEMパスフレーズ(暗号化されたパスワード)を設定した後、秘密キーキーを設定するときにパスワード設定がキーファイルに書き込まれる場合があります。これにより、Nginx / Apacheシリーズのサーバーは起動時にPEMパスフレーズの入力を要求します。その結果、起動に失敗します。パスワードを削除し、次の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 configure ssl
最初に/etc/nginx/ngnix.confを編集し、サーバー80をコメントアウトして、ポート80を介してzabbix-webにアクセスしないようにします。
cd /etc/nginx/
cp nginx.conf nginx.conf.bak
vim nginx.conf
変更する前に構成ファイルをバックアップする
nginx -tコマンドを使用して、変更後に構成ファイルの構文が正しいかどうかを確認します
httpsの構成である/etc/nginx/conf.dパスでzabbix.confを構成します。
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を使用することです。
証明書情報を確認する
この時点で、証明書がインストールされます
それが役に立つかどうかはわかりませんが、顧客は私をだましました。くそーNSFOCUSは、私のWebサイトがもう安全でないと言うことは決してありません、ハハハ