Python OpenSSL Укажите DNS-сервер - PullRequest
0 голосов
/ 11 февраля 2020

Кто-нибудь нашел способ указать DNS-сервер для соединений OpenSSL в Linux ОС? У нас есть внутренний и внешний DNS-серверы, и я создаю монитор для использования SSL-сертификатов. Мне нужна возможность указать DNS-сервер, который будет использоваться на соединениях имени хоста. Он прекрасно работает с внутренним DNS, но у меня возникают трудности с поиском пути к t ie на DNS-сервере. Я довольно новичок в изменении сетей через Python и не уверен, с чего начать. Возможно ли сделать это через функцию nameservers модуля dns.resolver?

Это выглядит как жизнеспособное решение для Windows, но я надеюсь найти что-то подобное для Linux. Как программно изменить DNS-серверы в Windows?

Ниже приведен мой код, который работает с хостом DNS по умолчанию.

def readCerts(self,host,port,cast):
    """readCerts prompts terminal for username.
    Attributes:
        host: Host or IP of SSL connection
        port: Port of SSL connection
        cast: Format of returned results (JSON currently only structure supported)
    Response:
        Returns certificate attributes in specified format
    """
    sslContext = SSL.Context(SSL.SSLv23_METHOD)
    apiSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sslConnection = SSL.Connection(sslContext,apiSocket)

    try:
        sslConnection.connect((host,port))
    except Exception as e:
        raise e
    else:
        #Block the socket 
        sslConnection.setblocking(1)
        #Set the hostname field for servers that support SNI.  Format must be in bytestring.
        sslConnection.set_tlsext_host_name(host.encode('utf-8'))

        try:
            sslConnection.do_handshake()
        except:
            pass
        else:
            #print "handshake succeeded"
            sslConnection.close()
            if cast.upper()=='JSON':
                attributes = self._FormatJSON(sslConnection.get_peer_cert_chain())        
                return attributes
...