Кто-нибудь нашел способ указать DNS-сервер для соединений OpenSSL в ОС Linux? У нас есть внутренние и внешние DNS-серверы, и я создаю монитор для использования SSL-сертификата. Мне нужна возможность указать DNS-сервер, который будет использоваться для соединений с именем хоста. Он отлично работает с внутренним DNS, но мне трудно найти способ привязать DNS-сервер. Я новичок в изменении сетей через Python и не знаю, с чего начать. Можно ли это сделать с помощью функции серверов имен модуля 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