1

Python には、pyasn1 を使用して PEM 形式のみを読み取る証明書パーサーがあります。ただし、どのようにすればよいですか 1. IP アドレスを指定してサーバー上のすべての証明書を一覧表示する

パーサーがそれぞれを 1 つずつ読み取ってフィールドを抽出できるようにするにはどうすればよいですか?

4

1 に答える 1

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

注: これは Python に関する質問であるため、ネットワークの礼儀正しさの問題は無視し、nmap は脇に置きます。try/except パスも残忍ですが、これは一例です。もちろん、エラー管理を改善することもできます。

これを超えて、より高度なもののために、これを広範囲に扱う利用可能なライブラリがたくさんあります。それらのいくつかは次のとおりです。

于 2016-05-26T07:40:26.917 に答える