我在 Python 中有一个证书解析器,它只使用 pyasn1 读取 PEM 格式。但是,我该如何 1. 列出给定 IP 地址的服务器上的所有证书
以便我的解析器可以一一读取它们中的每一个以提取字段?
我在 Python 中有一个证书解析器,它只使用 pyasn1 读取 PEM 格式。但是,我该如何 1. 列出给定 IP 地址的服务器上的所有证书
以便我的解析器可以一一读取它们中的每一个以提取字段?
要列出给定 IP 地址的服务器上的所有证书,高级流程将如下所示:
For each IP:
For every port:
initiate a TLS/SSL connection
collect SSL Certificate information
then do your parsing, extraction etc
标准 Python 库具有您开始使用核心部分所需的基本要素:
>>> import ssl
>>> ssl.get_server_certificate(('www.google.com', 443,))
'-----BEGIN CERTIFICATE-----\nMIIEgDCCA2igAwIBAgIIcdMVyU ...
[...]
\nsaofrQ==\n-----END CERTIFICATE-----\n'
同样适用于 IP:
>>> ssl.get_server_certificate(('109.88.203.241', 443,))
然后,您可以或多或少地这样编写扫描循环:
import ssl
for ip in ips_to_scan:
for port in range(65536):
try:
yield ssl.get_server_certificate((ip, port,))
except:
pass
注意:我忽略了网络礼貌问题,并且忽略了 nmap,因为这是一个 Python 问题。try/except 传递也很残酷,但这是一个例子。当然,您可能希望改进错误管理。
有许多可用的库可以广泛地处理这个问题,也可以用于更高级的东西。其中一些包括: