网站首页 > 技术教程 正文
出于安全的考虑,有时候我们需要在Prometheus和node_exporter之间启用TLS认证。
在Prometheus Server端
创建Prometheus CA证书,以及node_exporter CA证书
修改TARGET _IP 为node_exporter IP 192.168.0.107
# vi mutual-tls.sh
#!/bin/bash
set -ex
TARGET_IP="192.168.0.107"
echo '
# From http://apetec.com/support/GenerateSAN-CSR.htm
[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
[req_distinguished_name]
countryName = Country Name (2 letter code)
countryName_default = US
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = MN
localityName = Locality Name (eg, city)
localityName_default = Minneapolis
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default = Domain Control Validated
commonName = Internet Widgits Ltd
commonName_max = 64
[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
extendedKeyUsage = clientAuth,serverAuth
subjectAltName = @alt_names
[alt_names]' > openssl-${TARGET_IP}.cnf
echo -en "IP.1 = ${TARGET_IP}\n" >> openssl-${TARGET_IP}.cnf
# create CA
openssl genrsa -out ca.key 4096
chmod 400 ca.key
openssl req -new -x509 -sha256 -days 3650 -key ca.key -out ca.crt -subj "/CN=pro
metheus-ca.example.com"
chmod 644 ca.crt
# Create target key
openssl genrsa -out target.key 2048
chmod 400 target.key
openssl req -new -key target.key -sha256 -out target.csr -config openssl-${TARGE
T_IP}.cnf -subj "/CN=prometheus-target.example.com"
openssl x509 -req -days 365 -sha256 -in target.csr -CA ca.crt -CAkey ca.key -set
_serial 1 -out target.crt -extensions v3_req -extfile openssl-${TARGET_IP}.cnf
chmod 444 target.crt
# Create client key for prometheus server
openssl genrsa -out client.key 2048
openssl req -new -key client.key -out client.csr -subj "/CN=prometheus.example.c
om"
openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.crt -CAkey ca.key -set
_serial 2 -out client.crt
mv ca.crt /etc/ssl/certs/prometheus-ca.crt
mv ca.key /etc/ssl/private/prometheus-ca.key
mv client.key /etc/prometheus/prometheus.key
chown prometheus:prometheus /etc/prometheus/prometheus.key
mv client.crt /etc/ssl/certs/prometheus.crt
echo 'Add the following lines to /etc/prometheus/prometheus.yml:'
echo " - job_name: 'node_exporter_ssl'
scrape_interval: 5s
scheme: https
tls_config:
ca_file: /etc/ssl/certs/prometheus-ca.crt
cert_file: /etc/ssl/certs/prometheus.crt
key_file: /etc/prometheus/prometheus.key
static_configs:
- targets: ['${TARGET_IP}:443']"
修改/etc/prometheus/prometheus.yml
- job_name: 'node_exporter_ssl'
scrape_interval: 5s
scheme: https
tls_config:
ca_file: /etc/ssl/certs/prometheus-ca.crt
cert_file: /etc/ssl/certs/prometheus.crt
key_file: /etc/prometheus/prometheus.key
static_configs:
- targets: ['192.168.0.107:443']
Node_exporter端
使用ca证书,nginx反向代理localhost:9100
# vi reverse-proxy-mutual-tls.sh
#!/bin/bash
set -e
mv target.crt /etc/ssl/certs/target.crt
mv target.key /etc/ssl/private/target.key
mv prometheus-ca.crt /etc/ssl/certs/prometheus-ca.crt
HOST="localhost"
PORT="9100"
# run script as root or with sudo
# install nginx and openssl
yum -y install nginx openssl
echo 'server {
listen 443;
ssl on;
ssl_certificate /etc/ssl/certs/target.crt;
ssl_certificate_key /etc/ssl/private/target.key;
ssl_client_certificate /etc/ssl/certs/prometheus-ca.crt;
ssl_verify_client on;
location / {
proxy_pass http://'${HOST}':'${PORT}'/;
}
}' > /etc/nginx/conf.d/node-exporter.conf
systemctl enable nginx
systemctl restart nginx
EXTERNAL_IP=$(localhost)
echo "Reverse proxy with mutual tls enabled on https://${EXTERNAL_IP}"
检查nginx界面 https://192.168.0.107/
如果提示需要ssl证书,说明nginx反向代理,配置好了
重启Prometheus,让Prometheus配置生效
# systemctl restart prometheus
检查Prometheus UI http://192.168.0.107:9090/targets
Prometheus与node_exporter之间TLS配置完成。
- 上一篇: Nginx的三个模块(nginx三大功能)
- 下一篇: Nginx的安全性保障(nginx 安全)
猜你喜欢
- 2024-10-13 如何在Tomcat中做TLS客户端认证(tomcat clientauth)
- 2024-10-13 我们应该使用 TLS1.3 吗(启用tls1.1)
- 2024-10-13 阿里云环境中TLS/SSL握手失败的场景分析
- 2024-10-13 「首席架构推荐」基于NGINX 的Kubernetes控制器
- 2024-09-28 如何在 NGINX Web 服务器中限制网络带宽 - Part 3
- 2024-09-28 高性能web服务器+反向代理服务器之Nginx
- 2024-09-28 如何在Node.js中使用SSL / TLS(node js server)
- 2024-09-28 「热点」Service Mesh利器:NGINX将支持gRPC
- 2024-09-28 放弃Nginx,Cloudflare开源基于Rust构建的网络服务框架Pingora
- 2024-09-28 Nginx配置最全详解(万字图文总结)
你 发表评论:
欢迎- 最近发表
-
- Win10 TH2正式版官方ESD映像转换ISO镜像方法详解
- 使用iso镜像升级到Windows 10的步骤
- macOS Ventura 13.2 (22D49) Boot ISO 原版可引导镜像
- 安利一个用ISO镜像文件制作引导U盘的的小工具RUFUS
- CentOS 7使用ISO镜像配置本地yum源
- 用于x86平台的安卓9.0 ISO镜像发布下载:通吃I/A/N、完全免费
- AlmaLinux 9.6发布:升级工具、初步支持IBM Power虚拟化技术
- Rufus写入工具简洁介绍与教程(写入模式)
- 新硬件也能安装使用了,Edge版Linux Mint 21.3镜像发布
- 开源工程师:Ubuntu应该抛弃32位ISO镜像
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)