История изменений
Исправление cyclon, (текущая версия) :
А ты вместо того, чтобы сокету context поменять, почему-то сам контекст меняешь.
The callback function, server_name_callback, will be called with three arguments; the first being the ssl.SSLSocket, the second is a string that represents the server name that the client is intending to communicate (or None if the TLS Client Hello does not contain a server name) and the third argument is the original SSLContext
Т.е. третий аргумент нужный контекст сокета, делаю так
def sni(self, sock, sni, context):
self.srvname = sni
if self.srvname:
context.load_cert_chain(certfile = self.srvname + '.crt', keyfile = self.srvname + '.key')
else:
context.load_cert_chain(certfile = 'server.crt', keyfile = 'server.key')
print "SNI: ", sni
всё по старому, или опять не там контекст меняю?
Это то же ничего не дало:
def sni(self, sock, sni, context):
...
sock.context.load_cert_chain(...)
...
То же самое и так:
def sni(self, sock, sni, context):
self.srvname = sni
sock.context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
sock.context.load_cert_chain(certfile = 'server.crt', keyfile = 'server.key')
print ("SNI: " + sni)
return None
Исправление cyclon, :
А ты вместо того, чтобы сокету context поменять, почему-то сам контекст меняешь.
The callback function, server_name_callback, will be called with three arguments; the first being the ssl.SSLSocket, the second is a string that represents the server name that the client is intending to communicate (or None if the TLS Client Hello does not contain a server name) and the third argument is the original SSLContext
Т.е. третий аргумент нужный контекст сокета, делаю так
def sni(self, sock, sni, context):
self.srvname = sni
if self.srvname:
context.load_cert_chain(certfile = self.srvname + '.crt', keyfile = self.srvname + '.key')
else:
context.load_cert_chain(certfile = 'server.crt', keyfile = 'server.key')
print "SNI: ", sni
всё по старому, или опять не там контекст меняю?
Это то же ничего не дало:
def sni(self, sock, sni, context):
...
sock.context.load_cert_chain(...)
...
То же самое и так:
Исправление cyclon, :
А ты вместо того, чтобы сокету context поменять, почему-то сам контекст меняешь.
The callback function, server_name_callback, will be called with three arguments; the first being the ssl.SSLSocket, the second is a string that represents the server name that the client is intending to communicate (or None if the TLS Client Hello does not contain a server name) and the third argument is the original SSLContext
Т.е. третий аргумент нужный контекст сокета, делаю так
def sni(self, sock, sni, context):
self.srvname = sni
if self.srvname:
context.load_cert_chain(certfile = self.srvname + '.crt', keyfile = self.srvname + '.key')
else:
context.load_cert_chain(certfile = 'server.crt', keyfile = 'server.key')
print "SNI: ", sni
всё по старому, или опять не там контекст меняю?
Это то же ничего не дало:
def sni(self, sock, sni, context):
...
sock.context.load_cert_chain(...)
...
Исправление cyclon, :
А ты вместо того, чтобы сокету context поменять, почему-то сам контекст меняешь.
The callback function, server_name_callback, will be called with three arguments; the first being the ssl.SSLSocket, the second is a string that represents the server name that the client is intending to communicate (or None if the TLS Client Hello does not contain a server name) and the third argument is the original SSLContext
Т.е. третий аргумент нужный контекст сокета, делаю так
def sni(self, sock, sni, context):
self.srvname = sni
if self.srvname:
context.load_cert_chain(certfile = self.srvname + '.crt', keyfile = self.srvname + '.key')
else:
context.load_cert_chain(certfile = 'server.crt', keyfile = 'server.key')
print "SNI: ", sni
всё по старому, или опять не там контекст меняю?
Это то же ничего не дало:
sock.context.load_cert_chain(...)
Исправление cyclon, :
А ты вместо того, чтобы сокету context поменять, почему-то сам контекст меняешь.
The callback function, server_name_callback, will be called with three arguments; the first being the ssl.SSLSocket, the second is a string that represents the server name that the client is intending to communicate (or None if the TLS Client Hello does not contain a server name) and the third argument is the original SSLContext
Т.е. третий аргумент нужный контекст сокета, делаю так
def sni(self, sock, sni, context):
self.srvname = sni
if self.srvname:
context.load_cert_chain(certfile = self.srvname + '.crt', keyfile = self.srvname + '.key')
else:
context.load_cert_chain(certfile = 'server.crt', keyfile = 'server.key')
print "SNI: ", sni
всё по старому, или опять не там контекст меняю?
Исходная версия cyclon, :
А ты вместо того, чтобы сокету context поменять, почему-то сам контекст меняешь.
The callback function, server_name_callback, will be called with three arguments; the first being the ssl.SSLSocket, the second is a string that represents the server name that the client is intending to communicate (or None if the TLS Client Hello does not contain a server name) and the third argument is the original SSLContext
Т.е. третий аргумент нужный контекст, делаю так
def sni(self, sock, sni, context):
self.srvname = sni
if self.srvname:
context.load_cert_chain(certfile = self.srvname + '.crt', keyfile = self.srvname + '.key')
else:
context.load_cert_chain(certfile = 'server.crt', keyfile = 'server.key')
print "SNI: ", sni
всё по старому