这不是这篇文章的重复。我尝试了那里提供的解决方案,但在我的情况下都没有起作用。
我正在使用Windows和Python 3.6.5。我有一个用于TLS客户端的Python脚本。我需要连接到的服务器使用自签名证书。当我尝试使用我的脚本连接它时,我会得到以下错误:
我正在使用Windows和Python 3.6.5。我有一个用于TLS客户端的Python脚本。我需要连接到的服务器使用自签名证书。当我尝试使用我的脚本连接它时,我会得到以下错误:
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:833)
我需要解析证书。我尝试将我的服务器证书.pem
的内容添加到名为cacert.pem
的文件中,该文件位于C:\Python36\Lib\site-packages\certifi
中,并重新运行程序。但没有任何变化。这是我的脚本,请帮助我让客户端对此服务器做出例外,因为我信任它的证书。
import socket, ssl
import itertools
context = ssl.SSLContext()
context.verify_mode = ssl.CERT_OPTIONAL
context.check_hostname = False
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
domain="192.168.56.3" # my server
ssl_sock = context.wrap_socket(s, server_hostname=domain)
ssl_sock.connect((domain, 443))
print("====== peer's certificate ======")
try:
cert = ssl_sock.getpeercert()
print(cert)
except SSLError as e:
print("Error: ",e)
ssl_sock.close()