В настоящее время я пытаюсь реконструировать, как обмен ключами и шифрование работают для программы.В основном я использовал wire shark, чтобы выяснить, как шифруются пакеты.Из того, что я обнаружил, они используют ECDHE-RSA-AES128-GCM-SHA256 с TLS1.2
Это то, что у меня сейчас есть.
import socket, ssl
tcpSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcpSocket.bind(('', 443))
tcpSocket.listen(1)
while True:
newsocket, fromaddr = tcpSocket.accept()
newsocket = ssl.wrap_socket(newsocket,
server_side=True,
do_handshake_on_connect=True,
certfile="cert.pem",
ssl_version=ssl.PROTOCOL_TLSv1_2,
ciphers="ECDHE-RSA-AES128-GCM-SHA256")
try:
#Later add stuff
pass
finally:
newsocket.shutdown(socket.SHUT_RDWR)
newsocket.close()
Я пытался представить, как этоработает, используя простую картинку здесь .Я сделал это, используя пакеты wireshark, которые я видел здесь
В настоящее время с этим кодом сервер никогда не отвечает с помощью обмена ключами клиента, а вместо этого просто падает, что приводит к https://hastebin.com/wiqojapule.sql
Таким образом, основной вопрос, который я пытаюсь задать, заключается в том, почему программа python никогда не распознает клиента и затем передает привет серверу.В настоящее время он просто отправляет клиенту Hello обратно.
Кроме того, здесь есть акула для моего python-сокета и программы: здесь