LINUX.ORG.RU

История изменений

Исправление 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

всё по старому