From 176d819559e01125c6fe2a34c86cb47c62f49b27 Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Thu, 14 Jun 2012 21:57:55 +1200 Subject: Move server comms to OpenSSL. --- libmproxy/proxy.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'libmproxy/proxy.py') diff --git a/libmproxy/proxy.py b/libmproxy/proxy.py index c3daca14..ea38b1e8 100644 --- a/libmproxy/proxy.py +++ b/libmproxy/proxy.py @@ -20,7 +20,7 @@ """ import sys, os, string, socket, time import shutil, tempfile, threading -import optparse, SocketServer, ssl +import optparse, SocketServer import utils, flow, certutils, version, wsgi from OpenSSL import SSL @@ -310,14 +310,19 @@ class ServerConnection: clientcert = None else: clientcert = None - server = ssl.wrap_socket(server, certfile = clientcert) + context = SSL.Context(SSL.SSLv23_METHOD) + if clientcert: + context.use_certificate_file(clientcert) + server = SSL.Connection(context, server) server.connect((addr, self.port)) if self.scheme == "https": - self.cert = server.getpeercert(True) + self.cert = server.get_peer_certificate() + self.rfile, self.wfile = FileLike(server), FileLike(server) + else: + self.rfile, self.wfile = server.makefile('rb'), server.makefile('wb') except socket.error, err: raise ProxyError(502, 'Error connecting to "%s": %s' % (self.host, err)) self.sock = server - self.rfile, self.wfile = server.makefile('rb'), server.makefile('wb') def send(self, request): self.requestcount += 1 -- cgit v1.2.3