2012-12-13 79 views
1

目前有關這個主題的問題沒有解決我的問題,也沒有谷歌。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 8; 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

不是確切的答案,但問題出在我的證書文件上,你的回答讓我朝着正確的方向前進。謝謝! – Lunchbox

相關問題