如何使用Python

时间:2016-05-18 05:32:15

标签: python certificate certificate-store

我在Python中有一个证书解析器,它只使用pyasn1读取PEM格式。但是,我该怎么做  1.在给定IP地址的服务器上列出所有证书

这样我的解析器可以逐个读取它们中的每一个来提取字段?

1 个答案:

答案 0 :(得分:4)

要列出给定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传递也是残酷的,但这只是一个例子。当然,您可能希望改进错误管理。

有许多图书馆可以解决这个问题以及更高级的内容。其中一些包括: