Python 将证书传递给ssl处理程序
我正在设计一个ssl服务器,其中我将twisted与ssl一起使用,它需要客户端证书身份验证才能继续程序,当我验证客户端的ssl证书时,它返回True,但我希望在客户端证书中传递commanname和emailaddress,以便我可以在handler类中获取该特定客户端的设置,那么您可以帮助我吗Python 将证书传递给ssl处理程序,python,openssl,twisted,ssl-certificate,twisted.internet,Python,Openssl,Twisted,Ssl Certificate,Twisted.internet,我正在设计一个ssl服务器,其中我将twisted与ssl一起使用,它需要客户端证书身份验证才能继续程序,当我验证客户端的ssl证书时,它返回True,但我希望在客户端证书中传递commanname和emailaddress,以便我可以在handler类中获取该特定客户端的设置,那么您可以帮助我吗 from OpenSSL import SSL from twisted.internet import ssl, reactor from twisted.internet.protocol imp
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):
global client_username
if not ok:
return False
else:
return True
if __name__ == '__main__':
#setting up ssl json server
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()
调用
Protocol.dataReceived
中的transport.getPeerCertificate
或其他协议方法(仅在您收到一些数据之后)