我知道周围也有类似的问题,我仔细研究了这些问题,最后又问了一个问题。
要解释当前的问题: 我必须建立与服务器的安全连接 为此,我已经获得了一个私钥,证书和CA证书。
我将所有这些都放在一个名为“ one.pem”的文件中 这是我编写的用于建立连接的代码。
import socket
import ssl
import os
HOST, PORT, CERT, KEY= 'XX.XX.XX.XX', 1234, "one.pem", "private.pem"
exists = os.path.exists(CERT)
print(exists)
exists = os.path.exists(KEY)
print(exists)
context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
context.load_cert_chain(certfile=CERT, keyfile=None, password=None)
context.verify_mode = ssl.CERT_REQUIRED
with socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0) as sock:
with context.wrap_socket(sock, server_hostname=HOST,certfile=CERT) as ssock:
print(ssock.version())
try:
ssock.connect((HOST, PORT))
except ssl.SSLError as err:
print("Error Connecting : {}".format(str(err)))
我以here的例子为例 任何提示,想法都欢迎。
编辑: 这就是我的“ one.pem”的样子(它与python文件位于同一文件夹中)
-----BEGIN RSA PRIVATE KEY-----
... (private key in base64 encoding) ...
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
... (certficte in base64 encoding) ...
-----END CERTIFICATE----
-----BEGIN CERTIFICATE-----
... (CA certficte in base64 encoding) ...
-----END CERTIFICATE----
编辑: 错误消息:
Traceback (most recent call last):
File "ssl_connect.py", line 16, in <module>
context.load_cert_chain(certfile=CERT)
ssl.SSLError: [SSL] PEM lib (_ssl.c:3337)