SSL证书有效期检测命令

适用于本地文件

CODEopenssl x509 -noout -dates -in certfilename.pem

certfilename.pem 为本地证书文件。

适用于在线网站

CODEopenssl s_client -connect example.com:443 -servername example.com | openssl x509 -noout -dates

example.com 为目标站点域名,端口按需修改。

输出示例:

CODEnotBefore=有效期起始时间(如:Mar 20 00:00:00 2023 GMT)
notAfter=有效期截止时间(如:Mar 19 23:59:59 2024 GMT)

应用脚本

检测SSL证书并复制证书目录脚本

CODE#!/bin/bash

# 证书检测与更新脚本
CERT_FILE="/cert/fullchain.pem"
SOURCE_DIR="/letsencrypt/live/"
TARGET_DIR="/cert/"

# 检测证书是否存在
if [ ! -f "$CERT_FILE" ]; then
    echo "错误: 证书文件 $CERT_FILE 不存在!"
    exit 1
fi

# 获取证书过期日期
EXPIRY_DATE=$(openssl x509 -noout -dates -in "$CERT_FILE" | grep "notAfter" | cut -d= -f2)
EXPIRY_TIMESTAMP=$(date -d "$EXPIRY_DATE" +%s)
CURRENT_TIMESTAMP=$(date +%s)

# 计算剩余天数
DAYS_LEFT=$(( (EXPIRY_TIMESTAMP - CURRENT_TIMESTAMP) / 86400 ))

echo "证书有效期至: $EXPIRY_DATE"
echo "剩余天数: $DAYS_LEFT 天"

# 检查证书是否过期或即将过期(提前7天更新)
if [ "$DAYS_LEFT" -le 7 ]; then
    echo "证书已过期或即将过期,开始更新..."
    
    # 检查源目录是否存在
    if [ ! -d "$SOURCE_DIR" ]; then
        echo "错误: 源目录 $SOURCE_DIR 不存在!"
        exit 1
    fi
    
    # 复制证书文件(保留权限和时间戳)
    cp -p "$SOURCE_DIR"/* "$TARGET_DIR"
    
    if [ $? -eq 0 ]; then
        echo "证书更新成功!"
    else
        echo "错误: 证书更新失败!"
        exit 1
    fi
else
    echo "证书有效,剩余 $DAYS_LEFT 天,无需更新。"
fi

标签: ssl shell 命令 openssl x509

添加新评论

external-dark-gradak-weather-gradak-royyan-wijaya-4
collapse-arrow