Мне нужно просмотреть список 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 или нет?