aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy
diff options
context:
space:
mode:
authorMichael J. Bazzinotti <mbazzinotti@gmail.com>2015-12-28 15:20:45 -0500
committerMichael J. Bazzinotti <mbazzinotti@gmail.com>2015-12-28 15:20:45 -0500
commit80690b79062c739fc8adfc725d39a68d4b65b43a (patch)
treee80e05eff05a690a0c7d76ba36b46cb4329c631f /libmproxy
parent6391b05ef1b92585765eb77e352921ec61b65020 (diff)
downloadmitmproxy-80690b79062c739fc8adfc725d39a68d4b65b43a.tar.gz
mitmproxy-80690b79062c739fc8adfc725d39a68d4b65b43a.tar.bz2
mitmproxy-80690b79062c739fc8adfc725d39a68d4b65b43a.zip
[docs/libmproxy/test] Support single client-side cert file as argument to
--client-certs
Diffstat (limited to 'libmproxy')
-rw-r--r--libmproxy/cmdline.py2
-rw-r--r--libmproxy/models/connections.py13
-rw-r--r--libmproxy/proxy/config.py8
3 files changed, 14 insertions, 9 deletions
diff --git a/libmproxy/cmdline.py b/libmproxy/cmdline.py
index 16678486..99b76e68 100644
--- a/libmproxy/cmdline.py
+++ b/libmproxy/cmdline.py
@@ -407,7 +407,7 @@ def proxy_ssl_options(parser):
group.add_argument(
"--client-certs", action="store",
type=str, dest="clientcerts", default=None,
- help="Client certificate directory."
+ help="Client certificate file or directory."
)
group.add_argument(
"--no-upstream-cert", default=False,
diff --git a/libmproxy/models/connections.py b/libmproxy/models/connections.py
index 3aa522ea..0991955d 100644
--- a/libmproxy/models/connections.py
+++ b/libmproxy/models/connections.py
@@ -174,11 +174,14 @@ class ServerConnection(tcp.TCPClient, stateobject.StateObject):
def establish_ssl(self, clientcerts, sni, **kwargs):
clientcert = None
if clientcerts:
- path = os.path.join(
- clientcerts,
- self.address.host.encode("idna")) + ".pem"
- if os.path.exists(path):
- clientcert = path
+ if os.path.isfile(clientcerts):
+ clientcert = clientcerts
+ else:
+ path = os.path.join(
+ clientcerts,
+ self.address.host.encode("idna")) + ".pem"
+ if os.path.exists(path):
+ clientcert = path
self.convert_to_ssl(cert=clientcert, sni=sni, **kwargs)
self.sni = sni
diff --git a/libmproxy/proxy/config.py b/libmproxy/proxy/config.py
index c7b51311..f06e55ca 100644
--- a/libmproxy/proxy/config.py
+++ b/libmproxy/proxy/config.py
@@ -133,10 +133,12 @@ def process_proxy_options(parser, options):
if options.clientcerts:
options.clientcerts = os.path.expanduser(options.clientcerts)
- if not os.path.exists(options.clientcerts) or not os.path.isdir(options.clientcerts):
+ if not (os.path.exists(options.clientcerts) or
+ os.path.isdir(options.clientcerts) or
+ os.path.isfile(options.clientcerts)):
return parser.error(
- "Client certificate directory does not exist or is not a directory: %s" %
- options.clientcerts
+ "Client certificate argument is not a file or directory, "
+ "or does not exist: %s" % options.clientcerts
)
if options.auth_nonanonymous or options.auth_singleuser or options.auth_htpasswd: