news 2026/4/17 21:04:49

运维必备: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/4/16 11:16:14

Glyph学术研究应用:论文综述生成系统部署步骤

Glyph学术研究应用&#xff1a;论文综述生成系统部署步骤 1. 引言&#xff1a;为什么需要Glyph&#xff1f; 在学术研究中&#xff0c;面对海量文献时&#xff0c;快速掌握某一领域的研究进展是一项挑战。传统的论文阅读方式效率低、耗时长&#xff0c;而现有的文本摘要工具又…

作者头像 李华
网站建设 2026/4/16 23:34:13

终极3D格式转换:STL到STEP完整操作指南

终极3D格式转换&#xff1a;STL到STEP完整操作指南 【免费下载链接】stltostp Convert stl files to STEP brep files 项目地址: https://gitcode.com/gh_mirrors/st/stltostp 在3D设计和制造领域&#xff0c;数据格式的兼容性直接影响着工作效率。STL格式因其简单易用在…

作者头像 李华
网站建设 2026/4/17 2:41:57

手机直播终极方案:免费OBS插件打造高清摄像头完整指南

手机直播终极方案&#xff1a;免费OBS插件打造高清摄像头完整指南 【免费下载链接】droidcam-obs-plugin DroidCam OBS Source 项目地址: https://gitcode.com/gh_mirrors/dr/droidcam-obs-plugin 还在为专业直播设备的高昂价格而犹豫吗&#xff1f;想要用普通手机就能获…

作者头像 李华
网站建设 2026/4/16 11:16:20

如何用大模型创作古典音乐?NotaGen使用指南来了

如何用大模型创作古典音乐&#xff1f;NotaGen使用指南来了 1. 开启AI作曲新体验&#xff1a;NotaGen快速上手 你是否曾幻想过自己也能写出贝多芬式的交响乐&#xff0c;或是肖邦般优雅的钢琴曲&#xff1f;现在&#xff0c;借助大模型技术&#xff0c;这一切不再是专业作曲家…

作者头像 李华
网站建设 2026/4/17 16:46:47

Open-AutoGLM云端API调用教程,免本地部署超省心

Open-AutoGLM云端API调用教程&#xff0c;免本地部署超省心 1. 前言&#xff1a;当大模型有了“手” 你有没有想过&#xff0c;让AI真正帮你操作手机&#xff1f;不是简单的语音唤醒&#xff0c;而是像真人一样看屏幕、点按钮、滑动页面&#xff0c;甚至完成一整套复杂的任务…

作者头像 李华
网站建设 2026/4/17 21:00:30

终极指南:4步掌握Chatbox架构设计与扩展技巧

终极指南&#xff1a;4步掌握Chatbox架构设计与扩展技巧 【免费下载链接】chatbox Chatbox是一款开源的AI桌面客户端&#xff0c;它提供简单易用的界面&#xff0c;助用户高效与AI交互。可以有效提升工作效率&#xff0c;同时确保数据安全。源项目地址&#xff1a;https://gith…

作者头像 李华