пытаюсь написать сервер с авторизацией по клиентскому сертификату. Код | from OpenSSL import SSL from twisted.internet import ssl, reactor from twisted.internet.protocol import Factory, Protocol from twisted.web import server, resource, static, twcgi
class Handler(Protocol): def dataReceived(self, data): self.transport.write(data)
def connectionMade(self): self.transport.write('hello world')
def verifyCallback(connection, x509, errnum, errdepth, ok): if not ok: return False else: return True
if __name__ == '__main__':
factory = Factory() factory.protocol = Handler myContextFactory = ssl.DefaultOpenSSLContextFactory('server.key', 'server.crt',SSL.TLSv1_METHOD) ctx = myContextFactory.getContext() ctx.load_verify_locations("ca.crt") ctx.set_verify(SSL.VERIFY_PEER | SSL.VERIFY_FAIL_IF_NO_PEER_CERT,verifyCallback) reactor.listenSSL(8080, factory,myContextFactory) reactor.run()
|
проблема в том что я не могу отклонить невалидный сертификат, т.е когда в verifyCallback return False, соединение не разрывается и данные поступают в dataReceived
|