如何解决ssl连接问题:“ ssl.SSLError:[SSL] PEM库(_ssl.c:3337)

时间:2018-07-15 13:18:36

标签: python-3.x ssl

我知道周围也有类似的问题,我仔细研究了这些问题,最后又问了一个问题。

要解释当前的问题: 我必须建立与服务器的安全连接 为此,我已经获得了一个私钥,证书和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)

0 个答案:

没有答案