龙空技术网

Python小技巧:获取SSL证书到期时间

乐维社区 243

前言:

眼前小伙伴们对“python ssl socket”大致比较注意,姐妹们都想要剖析一些“python ssl socket”的相关资讯。那么小编在网上汇集了一些关于“python ssl socket””的相关知识,希望咱们能喜欢,我们一起来学习一下吧!

在前面的文章中曾介绍过如何通过openssl命令获取SSL证书的到期时间:通过zabbix监控ssl证书到期时间

有人反馈实践中这种方式存在缺陷,可能会出现部分域名证书无法获取的情况,报错如下:

140323981043600:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:707:Expecting: TRUSTED CERTIFICATE

接下来介绍另一种解决方式——通过python获取SSL证书到期时间,代码如下:

#!/bin/env python3

import ssl

import socket

import datetime

import sys

hostname = 'baidu.com'

port = 443

context = ssl.create_default_context()

with socket.create_connection((hostname, port)) as sock:

with context.wrap_socket(sock, server_hostname=hostname) as sslsock:

cert = sslsock.getpeercert()

expiry_date_str = cert['notAfter']

expiry_date_obj = datetime.datetime.strptime(expiry_date_str, '%b %d %H:%M:%S %Y %Z')

days_left = (expiry_date_obj - datetime.datetime.now()).days

print(days_left)

模板制作方式在此不做描述,可参考之前的文章,通过zabbix监控ssl证书到期时间。

以上就是这一期的分享内容。大家好,我是乐乐,专注运维技术研究与分享,关注我,了解更多运维小知识。如有问题,还可以到乐维社区进行留言提问,与广大运维技术爱好者共同探讨。

标签: #python ssl socket #python ssl socket 服务器不稳定