이것은 아마도 다른 미해결 스레드 일 테지만 어쨌든 일부 정보는 채울 것입니다.Python - SSL - 버전 번호가 잘못되었습니다.
잠시라도 SSL 래핑을 수행 할 수 없습니다. 내 wrap_socket() 및 do_handshake()에서 잘못하고있는 것에 대한 아이디어가 있습니까?
키 파일이 100 % 완벽하게 보이고 핸드 셰이크 전에 .recv()없이 AND로 시도했습니다. 방금 생성 내가 RECV() 넣을 위치에 따라이 : 그것은 분명하지 나 내가 틀렸다면 공식적으로
SSL3_GET_CLIENT_HELLO:wrong version number
SSL3_GET_RECORD:wrong version number
class Server():
def __init__(self, listen = '', port = 8080, ssl = False):
self.sock = socket.socket()
self.sock.bind((listen, port))
self.sock.listen(5)
def accept(self):
newsocket, fromaddr = self.sock.accept()
newsocket.recv(32)
newsocket.setblocking(0)
sslsock = ssl.wrap_socket(newsocket,
server_side=True,
certfile="./kernel/sock/server.crt",
keyfile="./kernel/sock/server.key",
cert_reqs=ssl.CERT_NONE,
ssl_version=ssl.PROTOCOL_TLSv1,
do_handshake_on_connect=False,
suppress_ragged_eofs=True)
sslsock.do_handshake()
return sslsock, fromaddr
을 실패합니다 :)
을 핸드 셰이크의
import socket, ssl, time, select
class Server():
def __init__(self, listen = '', port = 443, ssl = False):
self.sock = socket.socket()
self.sock.bind((listen, port))
self.sock.listen(5)
def accept(self):
self.sock = ssl.wrap_socket(self.sock,
server_side=True,
certfile="./kernel/sock/server.crt",
keyfile="./kernel/sock/server.key",
cert_reqs=ssl.CERT_NONE,
ssl_version=ssl.PROTOCOL_SSLv3,
do_handshake_on_connect=False,
suppress_ragged_eofs=True)
newsocket, fromaddr = self.sock.accept()
print [newsocket.recv(32)]
newsocket.setblocking(False)
newsocket.do_handshake()
return newsocket, fromaddr
s = Server()
ns, na = s.accept()
print ns.recv(1024)
지금 내가 newsocket.recv (32)와 수 :
나는 SSLv3에 노력하고 또한 랩하는 비트의 위치를 변경, 코드 약간 수정 또한ssl.SSLError: [Errno 2] _ssl.c:490: The operation did not complete (read)
:
ssl.SSLError: [Errno 1] _ssl.c:1331: error:140940E5:SSL routines:SSL3_READ_BYTES:ssl handshake failure
및없이은 내가 트위스트를 사용하는 것을 거부
스케일링 가지 아래 :
import socket, ssl, time, select
from OpenSSL import SSL
class Server():
def __init__(self, listen = '', port = 443, ssl = False):
ctx = SSL.Context(SSL.SSLv23_METHOD)
ctx.use_privatekey_file("server.pem")
ctx.use_certificate_file("server.pem")
self.sock = SSL.Connection(ctx, socket.socket())
self.sock.bind((listen, port))
self.sock.listen(5)
def accept(self):
newsocket, fromaddr = self.sock.accept()
return newsocket, fromaddr
s = Server()
ns, na = s.accept()
print ns.recv(1024)
이는 "네이티브"만큼 좋은 작품 SSL 라이브러리. 내가 지금 어디에 있어요
OpenSSL.SSL.Error: [('SSL routines', 'SSL23_READ', 'ssl handshake failure')]
이는 다음과 같습니다 : 그러나 지금은이 오류가
import socket, ssl, time #, select
class Server():
def __init__(self, listen = '', port = 443, ssl = False):
self.sock = socket.socket()
self.sock.bind((listen, port))
self.sock.listen(5)
def accept(self):
self.ssl_sock = None
while not self.ssl_sock:
self.ssl_sock = ssl.wrap_socket(self.sock,
server_side=True,
certfile=r"C:\moo.pem",
keyfile=r"C:\moo.key",
cert_reqs=ssl.CERT_NONE,
ssl_version=ssl.PROTOCOL_TLSv1)
newsocket, fromaddr = self.ssl_sock.accept()
print([newsocket.recv()])
return newsocket, fromaddr
s = Server()
ns, na = s.accept()
print(ns.recv(1024))
이 파이어 폭스에서 "prefectly"작동하지만, 구글 크롬에서 NOT. 왜? 차이점이 뭐야? -.-
가 @Toxed 수 : 대답 – Cratylus