gpt4 book ai didi

Python套接字ssl连接

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

这是场景:

服务器通过主机10.10.10.1监听9999、9998两个端口客户端端口 9999 & Controller 端口 9998我能够将客户端和 Controller 连接到服务器,并在没有 ssl 套接字的情况下从 Controller 控制客户端。我想使用加密套接字我添加了 ssl 证书套接字连接,客户端也没有通过 SSL_SOCK 作为 Controller 连接到服务器。感谢您的帮助或建议。

服务器:

    s=socket(AF_INET, SOCK_STREAM)
s.bind(("10.10.10.1",9999))
s.listen(5)
port = 9999
password = "password"
bridgeport = 9998

allConnections = []
allAddresses = []

def getConnections():
for item in allConnections:
item.close()

del allConnections[:]
del allAddresses[:]

while 1:
try:
q,addr=s.accept()
connstream = ssl.wrap_socket(q, server_side=True, certfile="server.crt", keyfile="server.key", ssl_version=ssl.PROTOCOL_SSLv23)
connstream.setblocking(1)
allConnections.append(connstream)
allAddresses.append(addr)

except:
print "YOU ARE NOT CONNECTED!! TRY AGAIN LATER"
time.sleep(10.0)
break
def main():
bridge=socket(AF_INET, SOCK_STREAM)
bridge.bind(("10.10.10.1",9998))
bridge.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
while 1:
bridge.listen(1)
q,addr=bridge.accept()
bridgestream = ssl.wrap_socket(q, server_side=True, certfile="server.crt", keyfile="server.key", ssl_version=ssl.PROTOCOL_SSLv23)

cpass = bridgestream.recv(4096)
if (cpass == password):
print "Controller is connected"
else:
print "Controller not conected"
try:
main()
except:
try:

del allConnections[:]
del allAddresses[:]
except:
pass

Controller :

host = '10.10.10.1'
port = 9998
password = "password"


def main():

try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ssl_sock = ssl.wrap_socket(s, ca_certs="server.crt", cert_reqs=ssl.CERT_REQUIRED)
ssl_sock.connect((host, port))
except:
sys.exit("[ERROR] Can't connect to server")

ssl_sock.sendall(password)

客户:

host = "10.10.10.1"
port = 9999
def main(host, port):
while 1:
connected = False
while 1:
while (connected == False):
try:

print host
print port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print s
ssl_sock = ssl.wrap_socket(s, ca_certs="server.crt", cert_reqs=ssl.CERT_REQUIRED)
print "ssl_sock"
ssl_sock.connect((host,port))
print "Connected"
connected = True
except:
print "The client not Connected yet"
time.sleep(5)
while 1:
try:
main(host, port)
except:
time.sleep(5)

最佳答案

我遇到了类似的问题,建议采用两种方法:

  1. 首先尝试原始 TCP socket(没有 ssl.wrap_socket())。如果这有效,请使用诸如 netstat 之类的工具来诊断使用了哪些端口和 IP 地址,以防有任何东西被阻止。
  2. 尝试在任一侧创建一个 SSLContext,如下所示:
ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS)
ssl_context.verify_mode = ssl.CERT_NONE
stream_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
_socket = ssl_context.wrap_socket(stream_socket, server_hostname=hostname)
_socket.connect((hostname, port))

换句话说,不要先强制使用证书并尝试指定协议(protocol)。希望这对您有所帮助!

关于Python套接字ssl连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36849631/

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