news 2026/6/10 17:27:28

运维必备:10行shell脚本解决ssl证书更换遗漏难题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
运维必备:10行shell脚本解决ssl证书更换遗漏难题

SSL证书有效期正在逐年缩短,今年3月15日之前购买有效期是1年,3月15日之后购买的有效期只有200天,2027年缩短到100天,最终2029年有效期会缩短到47天。

作为运维人员,如果你也像我一样,手里有好几百个使用https的域名,部署位置也不统一,每年换ssl证书都担心漏换,那今天送你一段shell脚本,仅10来行就能解决漏换问题。

这是一个检测证书有效期的脚本,前面先讲下脚本如何工作,如果不想看也可以直接跳到文末复制脚本运行即可。

1 通过openssl来读取证书信息

[root@vm ~]# openssl s_client -connect www.baidu.com:443 -servername www.baidu.com -showcerts </dev/null 2>/dev/null | openssl x509 -dates -nooutnotBefore=Jul 907:01:022025 GMTnotAfter=Aug 1007:01:012026 GMT

参数说明:

  • openssl s_client, OpenSSL 的客户端工具,用于建立 SSL连接

  • -connect www.baidu.com:443, 指定要连接的目标域名 + 端口

  • -servername www.baidu.com, 指定servername

  • -showcerts, 输出完整的证书链

  • </dev/null, 关闭标准输入不等待用户输入直接输出证书并退出

  • 2>/dev/null, 重定向错误输出到空(过滤连接过程中的警告 / 调试信息)

  • openssl x509, 管道传递证书内容,用 x509 工具解析

  • -dates, 仅输出证书的生效时间(notBefore)和过期时间(notAfter)

  • -noout, 不输出证书的原始编码内容,否则输出内容过多会乱

2 提取证书过期时间

grep "notAfter" | cut -d'=' -f 2

notAfter 这一行是证书的过期时间,通过grep取出这一行,通过cut命令指定分隔符为“=”,输出分割后的第二列,即过期时间 Aug 1007:01:012026 GMT

3 将获取的时间转换为unix时间戳

Unix 时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,这里转换成时间戳方便后续计算时间。

[root@vm ~]# date -d "Aug 10 07:01:01 2026 GMT" +%s1786345261
  • date -d 是 Linux 中用于显示指定日期或时间的命令。它允许用户通过字符串格式化来解析和显示特定的日期和时间。

  • +%s 将解析后的时间转换为 Unix 时间戳

4 完整代码

​​​​​​​​​​​​

#命令行执行sh ssl_check.sh domain.txt 2>/dev/null#sh ssl_check.sh domain.txt#DOMAIN="xx.yy.com" #域名#PORT=443 #端口#域名文件domain.txt格式xx.yy.com:443for i in `cat $1`;doDOMAIN=`echo$i|awk -F ':''{print $1}'`;PORT=`echo$i | awk -F ':''{print $2}'` ;# 获取SSL证书信息SSL_CERT_INFO=$(openssl s_client -connect ${DOMAIN}:${PORT} -servername ${DOMAIN} -showcerts </dev/null 2>/dev/null | openssl x509 -dates -noout)# 提取证书有效期结束时间CERT_END_DATE=$(echo"${SSL_CERT_INFO}" | grep "notAfter" | cut -d'=' -f 2)# 将时间转换为Unix时间戳方便后续计算剩余天数END_TIMESTAMP=$(date -d "${CERT_END_DATE}" +%s)#当前系统时间CURRENT_TIMESTAMP=$(date +%s)# 计算剩余天数CERT_DAYS_REMAINING=$(( (${END_TIMESTAMP} - ${CURRENT_TIMESTAMP}) / 86400 ))#echo $i $CERT_DAYS_REMAINING#正在检测时输出.....echo -n .#证书有效期小于20天且不等于0,等于0的可能是没有ssl证书if [ $CERT_DAYS_REMAINING -lt 20 ] && [ $CERT_DAYS_REMAINING -ne 0 ]; thenecho"${DOMAIN}${PORT} 剩余${CERT_DAYS_REMAINING}天"fidone

5 运行脚本

  1. 把脚本文件另存为ssl_check.sh

  2. 准备一份域名清单,准备一份域名清单domain.txt,每行一个域名:端口号,格式如xx.yy.com:443

  3. 把22行证书有效期改为300天后执行sh ssl_check.sh domain.txt 结果:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 11:37:42

百度文库文档免费获取工具:终极清理与打印优化指南

百度文库文档免费获取工具&#xff1a;终极清理与打印优化指南 【免费下载链接】baidu-wenku fetch the document for free 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wenku 想要免费获取百度文库的完整文档内容吗&#xff1f;这款百度文库文档获取工具通过智…

作者头像 李华
网站建设 2026/6/10 11:37:17

Packmol分子结构构建工具深度解析与实战指南

Packmol分子结构构建工具深度解析与实战指南 【免费下载链接】packmol Packmol - Initial configurations for molecular dynamics simulations 项目地址: https://gitcode.com/gh_mirrors/pa/packmol Packmol作为分子动力学模拟领域的重要前置工具&#xff0c;为复杂分…

作者头像 李华
网站建设 2026/6/10 1:43:01

通义千问3-14B避坑指南:单卡部署常见问题全解

通义千问3-14B避坑指南&#xff1a;单卡部署常见问题全解 你是不是也和我一样&#xff0c;看到“14B体量、30B性能”、“单卡可跑”、“Thinking模式逼近QwQ-32B”这些关键词就心动不已&#xff1f;但一上手却发现&#xff1a;显存爆了、加载失败、响应卡顿、Ollama启动报错……

作者头像 李华
网站建设 2026/6/10 3:08:11

手把手教你部署OCR模型:cv_resnet18_ocr-detection保姆级教程

手把手教你部署OCR模型&#xff1a;cv_resnet18_ocr-detection保姆级教程 你是不是也遇到过这样的问题&#xff1a;一堆扫描件、截图、照片里的文字&#xff0c;手动一个个敲进电脑&#xff0c;费时又容易出错&#xff1f;别急&#xff0c;今天这篇文章就是为你准备的。我会带…

作者头像 李华
网站建设 2026/6/10 11:37:16

如何高效处理图文混合文档?试试PaddleOCR-VL-WEB大模型镜像

如何高效处理图文混合文档&#xff1f;试试PaddleOCR-VL-WEB大模型镜像 你有没有遇到过这样的问题&#xff1a;一份PDF报告里夹着表格、公式、图片说明和密密麻麻的文字&#xff0c;想提取关键信息却无从下手&#xff1f;或者企业每天要处理成百上千份扫描合同&#xff0c;靠人…

作者头像 李华
网站建设 2026/6/10 10:30:36

Qwen2.5-0.5B Web界面卡顿?前端集成优化教程

Qwen2.5-0.5B Web界面卡顿&#xff1f;前端集成优化教程 1. 为什么你的Qwen对话体验不够流畅&#xff1f; 你是不是也遇到过这种情况&#xff1a;明明部署了号称“极速”的 Qwen2.5-0.5B-Instruct 模型&#xff0c;结果打开Web界面却卡得像老式拨号上网&#xff1f;输入一个问…

作者头像 李华