Kafka-Exporter 9308端口启用TLS认证的完整指南

#作者:张桐瑞

文章目录

  • 1 方案描述
  • 2 涉及版本
  • 3 使用CA自签证书
    • 3.1一键生成证书脚本
      • 3.1.1证书脚本
      • 3.1.2执行结果
    • 3.2分步自建证书过程
      • 3.2.1生成CA私钥
      • 3.2.2生成CA自签名证书
      • 3.2.3生成服务器私钥和证书申请文件CRS
    • 3.3最终的文件列表
  • 4 Exporter启动命令
    • 4.1参数说明
  • 5 Prometheus.yml编写
    • 5.1配置说明
  • 6 回滚方案
    • 6.1Kafka-Exporter参数回滚
    • 6.2Prometheus配置回滚

1 方案描述

Kafka Exporter使用TLS进行Https认证,确保数据传输的安全性、完整性和保密性。该方案核心在于利用证书来实现服务器与客户端之间的双向身份验证。

2 涉及版本

Kafka-exporter在1.4.2版本后可配置TLS进行Https认证。

3 使用CA自签证书

(本示例只说明自签证书过程,具体请使用符合安全的证书)

3.1一键生成证书脚本

可以直接使用如下脚本一键生成证书脚本,根据3.1.2执行结果进行操作。

3.1.1证书脚本

#!/bin/bash
read -p "Enter your domain or ip [www.example.com/10.10.49.172]: " INPUT
echo "1. Create ca private key..."
openssl genrsa -des3 -out selfca.key 2048
echo "2. Create ca root certificate..."
openssl req -new -x509 -days 3650 -key selfca.key -subj "/C=CN/ST=BJ/L=BJ/O=MyRootCA/OU=MyCA/CN=CA" -out selfca.crt
echo "3. Create server key and certificate signing request..."
openssl req -newkey rsa:2048 -nodes -keyout server.key -subj "/C=CN/ST=BJ/L=BJ/O=MyRootServer/OU=MyServer/CN=$INPUT" -out server.csr
echo "4. Sign SSL certificate..."
openssl x509 -req -extfile <(printf "subjectAltName=IP:$INPUT") -days 3650 -in server.csr -CA selfca.crt -CAkey selfca.key -CAcreateserial -out server.crt
echo "5. Create end, next work..."
echo "Copy server.crt and server.key to your server machine"

3.1.2执行结果

$ ./onekeyssl.sh
Enter your domain or ip [www.example.com/10.10.49.172]: 10.10.19.1
1. Create ca private key...
Generating RSA private key, 2048 bit long modulus (2 primes)
..................................................+++++
.....................................+++++
e is 65537 (0x010001)
Enter pass phrase for selfca.key:【输入自定义密码】
Verifying - Enter pass phrase for selfca.key:【重复密码】
2. Create ca root certificate...
Enter pass phrase for selfca.key:【重复密码】
3. Create server key and certificate signing request...
Generating a RSA private key
.............................................................+++++
..........+++++
writing new private key to 'server.key'
-----
4. Sign SSL certificate...
Signature ok
subject=C = CN, ST = BJ, L = BJ, O = MyRootServer, OU = MyServer, CN = 10.10.19.1
Getting CA Private Key
Enter pass phrase for selfca.key:【重复密码】
5. Create end, next work...
Copy server.crt and server.key to your server machine

3.2分步自建证书过程

3.2.1生成CA私钥

# openssl genrsa -des3 -out selfca.key 2048 

运行命令后需要输入一个自定义密码两次,以后每次使用这个私钥都要输入密码
3.2.1.1说明:
这条命令使用 OpenSSL 工具生成一个带有Triple-DES(3DES)加密的密码保护的2048位RSA私钥文件,各个参数的含义如下:

  • openssl: OpenSSL 工具的命令行执行器。
  • genrsa: 生成RSA密钥的命令。
  • -des3: 使用Triple-DES算法对生成的私钥进行加密,这会在生成私钥时要求你设置一个密码,以便在每次使用私钥时都需要提供密码。
  • -out selfca.key: 指定生成的私钥的输出文件名为 selfca.key,私钥文件将被保存在当前工作目录中。
  • 2048: 指定生成的RSA私钥的位数为2048位,这是一种常见的安全密钥长度。

3.2.2生成CA自签名证书

openssl req -new -x509 -days 3650 -key selfca.key -subj "/C=CN/ST=BJ/L=BJ/O=MyRootCA/OU=MyCA/CN=CA" -out selfca.crt

3.2.2.1说明

  • openssl req: 这是 OpenSSL 工具中用于处理证书签署请求(CSR)的命令。
  • -new: 表示创建新的 CSR。
  • -x509: 表示生成自签名的 X.509 证书,而不是生成 CSR。
  • -days 3650: 设置证书的有效期为 3650 天(10 年)。
  • -key selfca.key: 指定用于生成证书的私钥文件为 selfca.key。
  • -subj “/C=CN/ST=BJ/L=BJ/O=MyRootCA/OU=MyCA/CN=CA”: 设置证书主题(Subject)的信息。这里使用了简化的 Distinguished Name (DN),包括了国家(C=CN)、省/州(ST=BJ)、城市(L=BJ)、组织(O=MyRootCA)、组织单位(OU=MyCA)、通用名称(CN=CA)等信息。
  • -out selfca.crt: 指定生成的证书文件的输出路径和文件名,这里为 selfca.crt。

3.2.3生成服务器私钥和证书申请文件CRS

openssl req -newkey rsa:2048 -nodes -keyout server.key -subj "/C=CN/ST=BJ/L=BJ/O=MyRootServer/OU=MyServer/CN=10.10.49.172" -out server.csr

3.2.3.1说明

openssl req: 这是 OpenSSL 工具中用于处理证书签署请求(CSR)的命令。

  • -newkey rsa:2048: 创建一个新的 RSA 密钥对,其中包括一个 2048 位的 RSA 私钥和相应的公钥。
  • -nodes: 生成的私钥不使用密码进行加密。这意味着私钥文件 server.key 将不需要密码才能访问。
  • -keyout server.key: 指定生成的私钥文件的输出路径和文件名,这里为 server.key。
  • -subj “/C=CN/ST=BJ/L=BJ/O=MyRootServer/OU=MyServer/CN=10.10.49.172”: 设置证书主题(Subject)的信息。这里使用了简化的 Distinguished Name (DN),包括了国家(C=CN)、省/州(ST=BJ)、城市(L=BJ)、组织(O=MyRootServer)、组织单位(OU=MyServer)、通用名称(CN=10.10.49.172)等信息。通用名称(CN)通常用于指定服务器的主机名或 IP 地址。
  • -out server.csr: 指定生成的证书签署请求文件的输出路径和文件名,这里为 server.csr。
    3.2.4使用CA根证书签名SSL证书
    $ openssl x509 -req -extfile <(printf “subjectAltName=IP:10.10.49.172”) -days 3650 -in server.csr -CA selfca.crt -CAkey selfca.key -CAcreateserial -out server.crt
    openssl x509: 这是 OpenSSL 工具中用于处理 X.509 证书的命令。
    -req: 表示输入的文件是证书签署请求(CSR)。
    -extfile <(printf “subjectAltName=IP:10.10.49.172[,DNS:<YOUR_DOMAIN>,…]”): 使用扩展文件,该文件包含了额外的证书扩展信息。在这里,subjectAltName 扩展用于指定主体的备用名称(Subject Alternative Name),这里指定了 IP 地址 10.10.49.172。你也可以在方括号中添加其他主机名或 IP 地址,用逗号分隔。
    -days 3650: 设置生成的证书的有效期为 3650 天(10 年)。
    -in server.csr: 指定输入的证书签署请求文件,这里为 server.csr。
    -CA selfca.crt: 指定用于签署证书的 CA 证书文件,这里为 selfca.crt。
    -CAkey selfca.key: 指定用于签署证书的 CA 私钥文件,这里为 selfca.key。
    -CAcreateserial: 创建一个新的序列号文件,该文件用于跟踪 CA 签署的证书的唯一性。
    -out server.crt: 指定生成的证书文件的输出路径和文件名,这里为 server.crt。
    selfca.key:CA私钥,用于后续签名SSL证书
    selfca.crt:CA根证书,用于后续签名SSL证书,需要加入到操作系统或浏览器的信任列表中

3.3最终的文件列表

server.key:服务器私钥,需要配置到https服务
server.csr:证书签署请求文件,后续没用
server.crt:自签名SSL证书,需要配置到https服务

4 Exporter启动命令

./kafka_exporter  --kafka.server=localhost:9092   --server.tls.key-file=/kafka_path_1/server.key   --server.tls.cert-file=/kafka_path_1/server.crt --server.tls.ca-file=/kafka_path_1/selfca.crt --server.tls.enabled

4.1参数说明

  • –kafka.server #Addresses (host:port) of Kafka server
  • –server.tls.enabled #Enable TLS for web server
  • –server.tls.ca-file #The certificate authority file for the web server
  • –server.tls.cert-file #The certificate file for the web server
  • –server.tls.key-file #The key file for the web server

5 Prometheus.yml编写

…
scrape_configs:- job_name: kafka-1scheme: httpsstatic_configs:- targets:- kafka_ip_1:9308tls_config:insecure_skip_verify: falseca_file: "/kafka_path_1/selfca.crt"- job_name: kafka-2scheme: httpsstatic_configs:- targets:- kafka_ip_2:9308tls_config:insecure_skip_verify: falseca_file: "/kafka_path_2/selfca.crt"- job_name: kafka-3scheme: httpsstatic_configs:- targets:- kafka_ip_3:9308tls_config:insecure_skip_verify: falseca_file: "/kafka_path_3/selfca.crt"
…

5.1配置说明

tls_config: 配置了TLS相关的设置:

  • insecure_skip_verify: false: 设置为false表示在建立TLS连接时会验证服务器的证书链和主机名。
  • ca_file: 指定CA证书文件的路径,这个文件包含了用来验证Kafka Exporter提供的证书的根证书。

6 回滚方案

6.1Kafka-Exporter参数回滚

仍使用原来启动参数来启动kafka-exporter。

6.2Prometheus配置回滚

仍使用原来prometheus配置文件采集指标。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/74006.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NFS共享搭建

准备工作 首先确保已经建了两台虚拟机&#xff0c;都是桥接模式&#xff0c;一台是windows server 2019 一台是centos7 用户配额教程,是在windows server 2019中&#xff0c;先新建虚拟池&#xff0c;然后创建虚拟磁盘&#xff0c;记得添加磁盘类型要选择第三个&#xff0c;要不…

DFT mode下hard phy STA Nopath

hard Phy boundary No Path 1. shift mode; shift cornor出现No Path的; PHY SI SO在shift mode必须有timing的path; 展示为No constrained path; check step: report_timing -though NO constrained path set timing_report_unconstrained true report again you will…

【工作记录】F12查看接口信息及postman中使用

可参考 详细教程&#xff1a;如何从前端查看调用接口、传参及返回结果&#xff08;附带图片案例&#xff09;_f12查看接口及参数-CSDN博客 1、接口信息 接口基础知识2&#xff1a;http通信的组成_接口请求信息包括-CSDN博客 HTTP类型接口之请求&响应详解 - 三叔测试笔记…

《自然》:陆地蒸散量研究的统计失误被撤回-空间加权平均的计算方法

文章目录 前言一、空间加权平均的计算方法二、代码1.Python 实现2.MATLAB代码 前言 In this article, we calculated global land evapotranspiration for 2003 to 2019 using a mass-balance approach. To do this, we calculated evapotranspiration as the residual of the…

开源软件许可证冲突的原因和解决方法

1、什么是开源许可证以及许可证冲突产生的问题 开源软件许可证是一种法律文件&#xff0c;它规定了软件用户、分发者和修改者使用、复制、修改和分发开源软件的权利和义务。开源许可证是由软件的版权所有者&#xff08;通常是开发者或开发团队&#xff09;发布的&#xff0c;它…

【el-upload】el-upload组件 - list-type=“picture“ 时,文件预览展示优化

目录 问题图el-upload预览组件 PicturePreview效果展示 问题图 el-upload <el-uploadref"upload"multipledragaction"#":auto-upload"false":file-list"fileList"name"files":accept".png,.jpg,.jpeg,.JGP,.JPEG,.…

微前端 qiankun vite vue3

文章目录 简介主应用 qiankun-main vue3 vite子应用 qiankun-app-vue2 webpack5子应用 qiankun-react webpack5子应用 quankun-vue3 vite遇到的问题 简介 主要介绍以qiankun框架为基础&#xff0c;vite 搭建vue3 项目为主应用&#xff0c;wepack vue2 和 webpack react 搭建的…

C#从入门到精通(1)

目录 第一章 C#与VS介绍 第二章 第一个C#程序 &#xff08;1&#xff09;C#程序基本组成 1.命名空间 2.类 3.Main方法 4.注释 5.语句 6.标识符及关键字 &#xff08;2&#xff09;程序编写规范 1.代码编写规则 2.程序命名方法 3.元素命名规范 第三章 变量 &…

东隆科技携手PRIMES成立中国校准实验室,开启激光诊断高精度新时代

3月12日&#xff0c;上海慕尼黑光博会期间&#xff0c;东隆科技正式宣布与德国PRIMES共同成立“中国校准实验室”。这一重要合作标志着东隆科技在本地化服务领域的优势与PRIMES在激光光束诊断领域的顶尖技术深度融合&#xff0c;旨在为中国客户提供更快速、更高精度的服务以及本…

HarmonyOS Next~鸿蒙系统架构设计解析:分层、模块化与智慧分发的技术革新

HarmonyOS Next&#xff5e;鸿蒙系统架构设计解析&#xff1a;分层、模块化与智慧分发的技术革新 ​ ​ 鸿蒙操作系统&#xff08;HarmonyOS&#xff09;作为华为自主研发的分布式操作系统&#xff0c;其架构设计以全场景、多设备协同为核心目标&#xff0c;通过分层架构、模…

Vue Router工作原理探究

摘要&#xff1a; 随着单页应用&#xff08;SPA&#xff09;的广泛流行&#xff0c;路由系统成为前端开发中至关重要的部分。Vue Router作为Vue.js官方的路由管理器&#xff0c;为Vue应用提供了强大的路由功能。本文深入探讨Vue Router的工作原理&#xff0c;包括其核心概念、路…

SysOM 可观测体系建设(一):万字长文解读低开销、高精度性能剖析工具livetrace

可观测性是一种通过分析系统输出结果并推断和衡量系统内部状态的能力。谈及可观测性一般包含几大功能&#xff1a;监控指标、链路追踪、告警日志&#xff0c;及 Continues Profiling 持续剖析能力。对于操作系统可观测&#xff0c;监控指标可以帮助查看各个子系统&#xff08;I…

网络安全设备配置与管理-实验4-防火墙AAA服务配置

实验4-p118防火墙AAA服务配置 从这个实验开始&#xff0c;每一个实验都是长篇大论&#x1f613; 不过有好兄弟会替我出手 注意&#xff1a;1. gns3.exe必须以管理员身份打开&#xff0c;否则ping不通虚拟机。 win10虚拟机无法做本次实验&#xff0c;必须用学校给的虚拟机。首…

路由Vue Router基本用法

路由的作用是根据URL来匹配对应的组件&#xff0c;并且无刷新切换模板的内容。vue.js中&#xff0c;可使用Vue Router来管理路由&#xff0c;让构建单页应用更加简单。 一、效果 二、实现 1.项目中安装Vue Router插件 pnpm install vue-routerlastest 2.main.js import { …

24. 状态模式

原文地址: 状态模式 更多内容请关注&#xff1a;智想天开 1. 状态模式简介 状态模式&#xff08;State Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许一个对象在其内部状态改变时改变其行为&#xff0c;使得该对象看起来似乎修改了其类。状态模式通过将状态的行…

【Qt】Qt + Modbus 服务端学习笔记

《Qt Modbus 服务端学习笔记》 1.因为项目的需要&#xff0c;要写一个modbus通信&#xff0c;csdn上感觉有些回答&#xff0c;代码是人工智能生成的&#xff0c;有些细节不对。我这个经过实测&#xff0c;是可以直接用的。 首先要包含Qt 的相关模块 Qt Modbus 模块主要包含以…

CherryStudio + 火山引擎DeepSeek R1 告别服务器繁忙

CherryStudio 火山引擎DeepSeek R1 告别服务器繁忙 一、下载CherryStudio并安装 CherryStudio是功能强大的多模型桌面客户端&#xff0c;支持Windows、macOS和Linux系统。集成了多种主流的大语言模型&#xff08;如OpenAI、DeepSeek、Gemini等&#xff09;以及本地模型运行功…

医院人事科室病区管理系统基于Spring Boot-SSM

目录 摘要 一、研究背景与意义 二、国内外研究现状 三. 系统目标 四、研究目的与内容 五、研究方法与技术路线 5.1 系统技术架构 六. 系统功能 6.1 人事管理 6.2 科室病区管理 6.3 科研管理 七. 系统安全性 八. 系统运行与维护 摘要 随着医疗行业的快速发展和医院…

Unity TextMeshPro中显示建筑特殊符号

示例&#xff1a;显示效果如图 实现步骤 1、下载 SJQY 字体库 2、导入字体&#xff1a;将 SJQY 字体文件&#xff08;如 .ttf 或 .otf 文件&#xff09;导入到 Unity 项目的 Assets 文件夹中。 3、创建 TMP 字体资产 方法一 方法二 选择刚导入的字体文件&#xff0c;在…

工具层handle_excel

该工具类利用openpyxl的load_workbook加载Excel&#xff0c;通过iter_rows按行迭代数据&#xff0c;将表头和用例数据用zipdict组合成字典&#xff0c;通过list.append将字典(单条测试用例)追加到列表中&#xff0c;从而封装Excel数据解析工具。 模块/类方法/属性使用场景描述o…