2012-12-13 6 views
1

이 주제와 관련된 현재의 질문은 내 문제를 해결하지 못했고 어느 것도 Google을 사용하지 않았습니다.SSL EOF가 파이썬 프로토콜을 위반하여 발생했습니다. httplib

관련 서버 코드 :

class ReuseHTTPServer(BaseHTTPServer.HTTPServer): 
    def __init__(self, address, handler, queue=None): 
     BaseHTTPServer.HTTPServer.__init__(self, address, handler) 

     self.address = address 
     ssl_socket = ssl.wrap_socket(socket.socket(self.address_family, self.socket_type), 
            keyfile = KEY_PATH, 
            certfile = CERTIFICATE_PATH, 
            server_side = True, 
            cert_reqs = ssl.CERT_REQUIRED, 
            ssl_version = ssl.PROTOCOL_TLSv1, 
            ca_certs = CA_PATH) 
     s = self.socket.getsockname() 

     print "serving:", s[0], "on port:", s[1] 

     self.socket = ssl_socket 

     self.server_bind() 
     self.server_activate() 

클라이언트 코드 :

conn = https.HTTPSConnection(HOST, port=PORT, key_file=KEY_PATH, cert_file=CERT_PATH) 

     conn.putrequest("GET", '/cgi-bin/retrieveRunningInstances') 

     conn.endheaders() 

     response = conn.getresponse() 

클라이언트와 연결 시도는 SSLError의 errno는 팔을 얻는다; EOF는 의정서를 위반하여 발생했습니다. openssl을 사용하여 인증서를 확인했습니다. 나는 머리카락을 꺼내고있다. 어떤 도움을 주시면 감사하겠습니다.

편집 :

오류가 conn.getresponse()의 핸드 셰이크 중에 발생합니다.

답변

0

나는 그것을 이해했다고 생각합니다.

SSLError errno 8; EOF occurred in violation of protocol 

그것은 내가 누락 cert_file을 한 것으로 밝혀졌다 : 저도 같은 문제가 있었다. 나는 다음과 같이 하나를 지정했지만 하나도 갖고 있지 않았다.

server = HTTPServer(('',5005), HttpHandler) 
server.socket = ssl.wrap_socket(server.socket, certfile='kencert.pem', server_side=True) 

.pem 파일을 추가했을 때 효과가있었습니다.

희망이 도움이됩니다.

+0

오늘 살펴 보겠습니다. 귀하의 회신에 감사드립니다. – Lunchbox

+0

정확한 답변이 아니었지만 문제점은 내 cert 파일과 관련되어 있었고 귀하의 답변은 올바른 방향으로 나를 이끌었습니다. 감사! – Lunchbox

관련 문제