Я работаю над проектом, в котором мне нужно отправить зашифрованные данные на сервер по сети.Я искал по интернету и проверил несколько программ, но я запутался между двумя пакетами http.client и Socket ранее, я думал, что оба они одно и то же.
Несколько строк из моего кода -
import http.client
.
.
ctx = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
conn = http.client.HTTPSConnection(host="wwww.my_server.com", port=443, context=ctx)
headers = {'Content-type': 'application/json'}
json_data = json.dumps(System_info)
conn.request('POST', '/post', json_data, headers)
Вышеприведенный метод работает без сертификатов, часть сертификата находится на рассмотрении.
Другой метод, который я обнаружил, использует Sockets-
import Socket
.
.
context = ssl.create_default_context(ssl.Purpose.SERVER_AUTH, cafile=server_cert)
context.load_cert_chain(certfile=client_cert, keyfile=client_key)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
conn = context.wrap_socket(sock=s, server_side=False, do_handshake_on_connect=True, server_hostname=server_sni_hostname)
conn.connect((host_addr, host_port))
Я смог запустить приведенный выше код в моей системе, где обамоя система была клиентом и сервером.
Однако я хотел знать, что мне следует использовать, поскольку я хочу отправлять данные на сервер NMS, который должен быть зашифрован и защищен.
Дополнительная информация-
Os - Ubuntu 16
Python 3.5