aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy/proxy.py
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2012-04-02 16:19:00 +1200
committerAldo Cortesi <aldo@nullcube.com>2012-04-02 16:21:23 +1200
commitab1d8fa3500f786528c5c6a3e2bba19cd96595d0 (patch)
treee50cb7be73f3a4425438825ff378bb94bf1a67d9 /libmproxy/proxy.py
parentbb03255da042f478d4fb1866b39028760e14f0bf (diff)
downloadmitmproxy-ab1d8fa3500f786528c5c6a3e2bba19cd96595d0.tar.gz
mitmproxy-ab1d8fa3500f786528c5c6a3e2bba19cd96595d0.tar.bz2
mitmproxy-ab1d8fa3500f786528c5c6a3e2bba19cd96595d0.zip
Expand SSL cert support
- Capture the remote SSL certificate - Expose the remote cert as an attribute on Response - Expand the certutils.SSLCert interface to expose more cert info
Diffstat (limited to 'libmproxy/proxy.py')
-rw-r--r--libmproxy/proxy.py5
1 files changed, 4 insertions, 1 deletions
diff --git a/libmproxy/proxy.py b/libmproxy/proxy.py
index c6a68ba3..a6db44c2 100644
--- a/libmproxy/proxy.py
+++ b/libmproxy/proxy.py
@@ -229,6 +229,7 @@ class ServerConnection:
self.port = request.port
self.scheme = request.scheme
self.close = False
+ self.cert = None
self.server, self.rfile, self.wfile = None, None, None
self.connect()
@@ -239,6 +240,8 @@ class ServerConnection:
if self.scheme == "https":
server = ssl.wrap_socket(server)
server.connect((addr, self.port))
+ if self.scheme == "https":
+ self.cert = server.getpeercert(True)
except socket.error, err:
raise ProxyError(502, 'Error connecting to "%s": %s' % (self.host, err))
self.server = server
@@ -275,7 +278,7 @@ class ServerConnection:
content = ""
else:
content = read_http_body(self.rfile, self, headers, True, self.config.body_size_limit)
- return flow.Response(self.request, code, msg, headers, content)
+ return flow.Response(self.request, code, msg, headers, content, self.cert)
def terminate(self):
try: