【发布时间】:2020-02-25 01:01:23
【问题描述】:
坚持尝试将我的结果从“20190211004950Z”(ASN1)转换为“2019-02-11”(标准日期)在有人问之前,这只是一个简单的 SSL 到期检查,并且日期创建/到期日期一直在输出就像我之前发布的那样。
我的代码是这样的
**
**import OpenSSL
import socket
import ssl
from pprint import pprint
from urllib.error import URLError, HTTPError
from urllib.request import Request, urlopen
import datetime
def get_certificate(port=443, timeout=10):
"""
:param timeout:
:type port: object
"""
context = ssl.create_default_context()
# test=(host,port)
host = input("enter a URL")
conn = socket.create_connection(address=(host, port))
sock = context.wrap_socket(conn, server_hostname=host)
sock.settimeout(timeout)
try:
der_cert = sock.getpeercert(True)
finally:
sock.close()
return ssl.DER_cert_to_PEM_cert(der_cert)
certificate = get_certificate()
x509 = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, certificate)
result = {
'subject': dict(x509.get_subject().get_components()),
'issuer': dict(x509.get_issuer().get_components()),
'serialNumber': x509.get_serial_number(),
'version': x509.get_version(),
'notBefore': str(x509.get_notBefore()),
'notAfter': str(x509.get_notAfter())
}
extensions = (x509.get_extension(i) for i in range(x509.get_extension_count()))
extension = (e.get_short_name() for e in extensions)
result.update(name=extension)
pprint(result)**
**
任何帮助将不胜感激
【问题讨论】:
-
你能分享一下周围的代码,给出一些上下文吗?您的字符串解析/格式化与
x509有什么关系? “ASN1(x509)”是什么意思? -
编辑了原始代码以提供全部内容
-
也许我是个盲人,但是你的代码应该在哪里进行解析呢?
-
'notBefore': str(x509.get_notBefore()), 'notAfter': str(x509.get_notAfter())
-
这些答案对你有帮助吗?
标签: python converters