首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >用 Python 检查 FTPS 服务器证书是否过期

用 Python 检查 FTPS 服务器证书是否过期

作者头像
YaoQi
发布2025-07-14 18:58:56
发布2025-07-14 18:58:56
9000
代码可运行
举报
运行总次数:0
代码可运行

之前写过一个检查HTTPS证书的《证书到期检查》,今天遇到个需求要检查FTPS的。

问AI,给个大体的代码,但是跑不通,还是自己搜索找到了答案。

代码很简单,用ftplib库连接服务器,由sock获取到证书,检查下就行了:

代码语言:javascript
代码运行次数:0
运行
复制
from ftplib import FTP_TLS
from datetime import datetime
import ssl

def get_cert_expiry_date(hostname, port=21):
    try:
        # 创建 FTPS 连接
        ftps = FTP_TLS(context=ssl._create_stdlib_context(cert_reqs=ssl.CERT_REQUIRED))
        ftps.connect(hostname, port)
        ftps.auth()  # 发送 AUTH TLS 命令
        #ftps.prot_p()  # 切换到安全数据连接,这句好像对检查证书无用
        # 获取 SSL socket 并提取证书
        cert = ftps.sock.getpeercert(binary_form=False) # cert_reqs=ssl.CERT_REQUIRED 才能获取到解析好的字典证书
        # print(cert)

        ## 获取PEM格式的需要这样
        # cert = ftps.sock.getpeercert(binary_form=True)
        # pem_cert = ssl.DER_cert_to_PEM_cert(cert)
        # print(pem_cert)

        # 解析证书的有效期
        begin_date = datetime.strptime(cert['notBefore'], '%b %d %H:%M:%S %Y %Z')
        expiry_date = datetime.strptime(cert['notAfter'], '%b %d %H:%M:%S %Y %Z')
        try:
            ftps.quit()
        except Exception as e:
            ftps.close()

        return begin_date,expiry_date

    except Exception as e:
        print(f"获取证书时出错: {e}")
        return None

def check_cert_expiry(hostname, port=21):
    _, expiry_date = get_cert_expiry_date(hostname, port)
    if expiry_date:
        current_date = datetime.now()
        if current_date > expiry_date:
            print(f"证书已过期!过期日期: {expiry_date}")
        else:
            print(f"证书未过期,有效至: {expiry_date}")

if __name__ == "__main__":
    ftps_host = "ftps.example.net"  # 替换为你的 FTPS 服务器地址
    ftps_port = 21  # 默认 FTPS 端口(显式 FTPS)

    check_cert_expiry(ftps_host, ftps_port)

输出只有一行字:

证书未过期,有效至: 2026-01-18 23:59:59

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-01-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 漫跑的小兔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档