Мне нужно просканировать список IP-адресов и получить общее имя из сертификата на этом IP-адресе (для каждого IP-адреса, который разрешает соединения с портом 443). Я смог успешно сделать это, используя сокеты и ssl-модули. Он работает для всех IP-адресов с действующими подписанными сертификатами, но не работает для самозаверяющих сертификатов.
Если я использую этот метод, он требует действительного сертификата, который подтвержден моим пакетом CA:
from socket import socket
import ssl
s = socket()
c = ssl.wrap_socket(s,cert_reqs=ssl.CERT_REQUIRED, ca_certs='ca-bundle.crt')
c.connect(('127.0.0.1', 443))
print c.getpeercert()
Если я удалю cert_reqs = ssl.CERT_REQUIRED
, он подключается, но не получает сертификат на всех.
Как я могу получить общее имя сертификата на IP независимо от того, соответствует ли он пакету ca-bundle?