gpt4 book ai didi

使用 ssl 和套接字的 python 客户端身份验证

转载 作者:太空宇宙 更新时间:2023-11-03 13:29:01 27 4
gpt4 key购买 nike

是否有仅使用 socket 和 ssl 而未扭曲的示例?

from OpenSSL import SSL
from twisted.internet import ssl, reactor
from twisted.internet.protocol import ClientFactory, Protocol

class EchoClient(Protocol):
def connectionMade(self):
"print connected"

def dataReceived(self, data):
print "Server said:", data
self.transport.loseConnection()

class EchoClientFactory(ClientFactory):
protocol = EchoClient

def clientConnectionFailed(self, connector, reason):
print "Connection failed - goodbye!"
reactor.stop()

def clientConnectionLost(self, connector, reason):
print "Connection lost - goodbye!"
reactor.stop()

class CtxFactory(ssl.ClientContextFactory):
def getContext(self):
self.method = SSL.TLSv1_METHOD
ctx = ssl.ClientContextFactory.getContext(self)
ctx.use_certificate_file('client.crt')
ctx.use_privatekey_file('client.key')
return ctx

if __name__ == '__main__':

factory = EchoClientFactory()
reactor.connectSSL('localhost', 8080, factory, CtxFactory())
reactor.run()

最佳答案

import socket, ssl, pprint

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# require a certificate from the server
ssl_sock = ssl.wrap_socket(s,
keyfile="client.key",
certfile="client.crt",
ca_certs="ca.crt",
cert_reqs=ssl.CERT_REQUIRED)

ssl_sock.connect(('127.0.0.1', 8080))

print repr(ssl_sock.getpeername())
print ssl_sock.cipher()
print pprint.pformat(ssl_sock.getpeercert())

ssl_sock.write("testing")
data = ssl_sock.read()
print data

ssl_sock.close()

关于使用 ssl 和套接字的 python 客户端身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11027865/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com