我正在从事需要通过网络将加密数据发送到服务器的项目。我已经在互联网上搜索并检查了几个程序,但我之前对两个包 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
交互式爱情
相关分类