ssl socket wrapper returns 连接错误
ssl socket wrapper returns error on connect
打开 ssl-wraped 套接字时,出现错误 ssl.SSLError: [SSL: UNKNOWN_PROTOCOL] unknown protocol (_ssl.c:581)
服务器是 运行 TLSv1.1
我的密码是
import socket, ssl
uw = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s = ssl.wrap_socket(uw, ssl_version=ssl.PROTOCOL_TLSv1_1)
s.connect((host, port))
我想不通。我试过使用 cacert 文件并得到同样的错误。
s = ssl.wrap_socket(uw, ca_certs="cacert.pem", cert_reqs=ssl.CERT_REQUIRED)
不是ssl套接字,而是内部套接字本身。因此,在构造 uw
套接字时指定系列和协议,如:
uw = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
请注意,以上只是在 IPV4 (AF_INET
) 上工作的 TCP (SOCK_STREAM
) 套接字的示例。
好的 找到我的问题:端口错误。我连接的是普通端口,而不是 SSL 封装端口。
我有同样的错误。
您应该为 HTTPS 使用端口 443。
我还在用 80 端口。
parsed = urlparse.urlparse(url)
PORT = 443
HOST = parsed.netloc
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s = ssl.wrap_socket(sock,ssl_version=ssl.PROTOCOL_SSLv23,ciphers="")
s.connect((HOST, PORT))
s.sendall('GET '+parsed.geturl()+ ' HTTP/1.1\r\n'\
+'Host: '+HOST+'\r\n'
+'\r\n')
data = ""
while True:
res = s.recv(4096)
if not res:
break
data += res
s.close()
打开 ssl-wraped 套接字时,出现错误 ssl.SSLError: [SSL: UNKNOWN_PROTOCOL] unknown protocol (_ssl.c:581)
服务器是 运行 TLSv1.1
我的密码是
import socket, ssl
uw = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s = ssl.wrap_socket(uw, ssl_version=ssl.PROTOCOL_TLSv1_1)
s.connect((host, port))
我想不通。我试过使用 cacert 文件并得到同样的错误。
s = ssl.wrap_socket(uw, ca_certs="cacert.pem", cert_reqs=ssl.CERT_REQUIRED)
不是ssl套接字,而是内部套接字本身。因此,在构造 uw
套接字时指定系列和协议,如:
uw = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
请注意,以上只是在 IPV4 (AF_INET
) 上工作的 TCP (SOCK_STREAM
) 套接字的示例。
好的 找到我的问题:端口错误。我连接的是普通端口,而不是 SSL 封装端口。
我有同样的错误。 您应该为 HTTPS 使用端口 443。 我还在用 80 端口。
parsed = urlparse.urlparse(url)
PORT = 443
HOST = parsed.netloc
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s = ssl.wrap_socket(sock,ssl_version=ssl.PROTOCOL_SSLv23,ciphers="")
s.connect((HOST, PORT))
s.sendall('GET '+parsed.geturl()+ ' HTTP/1.1\r\n'\
+'Host: '+HOST+'\r\n'
+'\r\n')
data = ""
while True:
res = s.recv(4096)
if not res:
break
data += res
s.close()