使用openssl制作自签名双向认证证书
可以直接使用我制作好的工具,支持自签名 HTTPS 证书和双向认证证书,纯 shell 脚本,支持 Docker 使用,一键生成证书:https://github.com/iuxt/my_cert 双向认证用途是什么: 双向认证就是客户端需要携带证书来请求服务器,证书校验通过了才会正常返回。比如说我有个网站只有自己访问,就可以配置双向认证,自己电脑安装一下证书就可以访问,还可以通过吊销证书的方式来禁止对应的人访问网站。 CA 证书生成 CA 私钥1openssl genrsa -out ca.key 4096 生成一个 ca.key 文件 生成 CA 证书非交互式创建交互式创建1openssl req -utf8 -new -x509 -days 3650 -key ca.key -out ca.crt -subj '/C=CN/ST=Shanghai/L=Pudong/O=iuxt/OU=张理坤/CN=www.i.com/emailAddress=iuxt@qq.com'1openssl req -utf8 -new -x509 -days 3650...
minio自建对象存储
docker 部署 这里我指定了 network,我的 nginx 也是用的这个 network,可以直接用 名字 来访问 123456docker run --name minio -d \ --env-file=.env \ --network iuxt \ -v ./data:/data \ -v ./config:/root/.mc \ minio/minio:RELEASE.2025-04-22T22-12-26Z server --console-address ":9001" /data .env 配置 12345MINIO_ROOT_USER=usernameMINIO_ROOT_PASSWORD=passwordMINIO_SERVER_URL=https://minio.xxx.comMINIO_BROWSER_REDIRECT_URL=https://minio.xxx.com/ui/MC_CONFIG_DIR=/root/.mc nginx...
ingress-nginx 使用自定义的nginx配置
新版 ingress 增强了 “ 安全性 “, 它认为用户自己写的 nginx 配置文件不安全,所以又加了限制。我的 ingress 版本是: 1.12.2 比如有个需求,Spring Boot 写的程序有个 /actuator 路径,安全审查不通过,如果是个 nginx 可以通过: 123location /actuator { return 404;} 来直接让它返回 404 configmap1234567891011121314apiVersion: v1data: allow-snippet-annotations: "true" annotations-risk-level: Criticalkind: ConfigMapmetadata: labels: app.kubernetes.io/component: controller app.kubernetes.io/instance: public-ingress-nginx app.kubernetes.io/name:...
P12格式证书与PEM格式转换
P12 证书是整合了公钥和私钥的,还可以给 P12 证书设置密码。 P12 转换为 PEM12345678# 提取证书openssl pkcs12 -in 1.p12 -clcerts -nokeys -out certificate.crt# 提取加密的私钥openssl pkcs12 -in 1.p12 -nocerts -out private_key.key# 提取未加密的私钥openssl pkcs12 -in 1.p12 -nocerts -nodes -out private_key.key 这种是加密的 PEM 私钥 123-----BEGIN ENCRYPTED PRIVATE KEY-----...-----END ENCRYPTED PRIVATE KEY----- 也可以将加密的 PEM 私钥转换成未加密的 PEM 私钥 1openssl rsa -in encrypt.key -out nopassword.key 未加密的 PEM 私钥长这样 123-----BEGIN PRIVATE KEY-----...-----END PRIVATE...
使用blackbox-exporter做域名监控
blackbox 创建模块对应的 blackbox exporter 的配置文件: 1234567891011121314151617181920212223242526272829303132modules: http_2xx: prober: http timeout: 5s http: valid_http_versions: ["HTTP/1.1", "HTTP/2"] valid_status_codes: [200] method: GET preferred_ip_protocol: "ip4" http_post_2xx: prober: http timeout: 5s http: valid_http_versions: ["HTTP/1.1", "HTTP/2"] method: POST preferred_ip_protocol:...
MySQL字符集转换导致的故障
1ALTER TABLE vehicle_user_role CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; 导致 CPU 飙升 回滚的时候: 1ALTER TABLE vehicle_user_role CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; 报错: 1ERROR 1366 (HY000): Incorrect string value: '\xF0\x9F\x90\x92"}' for column 'EXT' at row 333582 找到这条数据: 1SELECT * FROM vehicle_user_role WHERE HEX(`EXT`) LIKE '%F09F9092%' LIMIT 1; 清理不正确的数据: 1UPDATE vehicle_user_role SET EXT = NULL WHERE ROLE_ID =...
使用双向认证增加git仓库安全性
双向认证是用户需要提供证书来访问服务器,没有证书的用户不允许访问服务器,并且在服务端可以实现吊销指定用户的证书来实现禁止用户访问。配置 https 双向认证会影响到使用 https 协议拉取和推送代码,以及 git lfs 的正常使用 (lfs 使用 https 协议),ssh 协议使用代码仓库不受影响。 配置双向认证我是用的自签名证书,自签名证书的文档可以查看 制作和使用自签名证书 或者我的开源项目:https://github.com/iuxt/my_cert.git 服务器上的 nginx 上配置12345678910111213141516server { listen 443 ssl; server_name example.com; ssl_certificate /path/to/your/server.crt; ssl_certificate_key /path/to/your/server.key; ssl_client_certificate /path/to/your/ca.crt; # 配置 CA...
Prometheus自动监控K8S集群中的service
定义部署在 Kubernetes 上的 Prometheus 是有自动发现机制的,可以自动监控 service 通不通、监控 ingress 上的域名通不通等等。 HTTP Get 监控service 的 HTTP Get 监控1234567891011121314151617181920212223242526272829303132333435363738394041424344454647- job_name: 'service_http_get' # service 需要添加注解 # prometheus.io/http_get_path: /actuator/info # prometheus.io/http_get: "true" # prometheus.io/http_get_port: "8080" metrics_path: /probe params: module: [http_2xx] kubernetes_sd_configs: - role: service ...
Grafana 查询SQL 自定义变量
比如一个 dashboard 里面有很多通用的数据,不想每个 panel 面板都手动修改一遍,可以定义个全局的变量,所有面板都调用这个变量,后续需要修改的时候,直接改变量即可。 面板设置里添加变量这里添加好了之后,先打开 show on dashboard 显示 然后选择自己需要的数据,保存的时候,勾选 update default variable values 保存当前选择的值最后再把变量隐藏起来。 在查询的时候调用变量123456789101112SELECT `desc` AS '说明', CONVERT_TZ(time, '+08:00', '+00:00') AS '最近日期', vin, value AS '发生数量'FROM granfana.metricWHERE metric_name = 'active_fail' AND vin IN (${users})ORDER BY ...
使用selenium来实现Grafana的自动截图
selenium 是一个 python 库, 用于操作 chromium 浏览器实现一些自动化的动作, 本文是为了把 grafana 的监控图截图保存, 后续可以将图片做成运维报表之类的. 调试阶段调试阶段可以使用电脑上的 chrome,并关闭 headless 模式,方便看到界面执行的效果.chrome 官网下载即可, chromedriver 下载地址: https://googlechromelabs.github.io/chrome-for-testing/ , chromedriver 放在代码同目录即可. 问题为什么不用 grafana-image-renderer, 这个官方插件 BUG 挺多的, 比如一个图需要很长时间才能加载, 就会出现图还没加载出来, 就完成了截图的情况. 并且截图速度很慢. 简单的开始1pip install selenium 12345678910111213141516171819202122232425from selenium import webdriverfrom...