from urllib.request import Request, urlopen, ssl, socket
from urllib.error import URLError, HTTPError
import json
#some site without http/https in the path
base_url = 'CHANGE_ME_TO_YOUR_SITE'
port = '443'
hostname = base_url
context = ssl.create_default_context()
with socket.create_connection((hostname, port)) as sock:
with context.wrap_socket(sock, server_hostname=hostname) as ssock:
print(ssock.version())
data = json.dumps(ssock.getpeercert())
# print(ssock.getpeercert())
print (data)
1
检查这个名为check-tls-certs的仓库 . 它's not really aiohttp, but it'基于asyncio,所以它异步工作 .
3 回答
以前的答案是正确的,但你也可以使用套接字lib(这是用python 3.7测试)
检查这个名为check-tls-certs的仓库 . 它's not really aiohttp, but it'基于asyncio,所以它异步工作 .
我不能在日期之后将其与您当前的日期进行比较,以确定它是否已过期 . 更多详细信息How to import OpenSSL in python还有一段代码可以满足您的需求,但您需要预先安装OpenSSL
pip install pyopenssl
对于使用SNI的网站,请参阅以下有关如何获取证书的答案ssl.get_server_certificate for sites with SNI (Server Name Indication)