aboutsummaryrefslogtreecommitdiffstats
path: root/netlib/certutils.py
diff options
context:
space:
mode:
Diffstat (limited to 'netlib/certutils.py')
-rw-r--r--netlib/certutils.py29
1 files changed, 12 insertions, 17 deletions
diff --git a/netlib/certutils.py b/netlib/certutils.py
index 7dcb5450..22b5c35c 100644
--- a/netlib/certutils.py
+++ b/netlib/certutils.py
@@ -1,21 +1,24 @@
-import os, ssl, time, datetime, tempfile, shutil
+import os, ssl, time, datetime
from pyasn1.type import univ, constraint, char, namedtype, tag
from pyasn1.codec.der.decoder import decode
from pyasn1.error import PyAsn1Error
import OpenSSL
import tcp
+default_exp = 62208000 # =24 * 60 * 60 * 720
+default_o = "mitmproxy"
+default_cn = "mitmproxy"
-def create_ca():
+def create_ca(o=default_o, cn=default_cn, exp=default_exp):
key = OpenSSL.crypto.PKey()
key.generate_key(OpenSSL.crypto.TYPE_RSA, 1024)
ca = OpenSSL.crypto.X509()
ca.set_serial_number(int(time.time()*10000))
ca.set_version(2)
- ca.get_subject().CN = "mitmproxy"
- ca.get_subject().O = "mitmproxy"
+ ca.get_subject().CN = cn
+ ca.get_subject().O = o
ca.gmtime_adj_notBefore(0)
- ca.gmtime_adj_notAfter(24 * 60 * 60 * 720)
+ ca.gmtime_adj_notAfter(exp)
ca.set_issuer(ca.get_subject())
ca.set_pubkey(key)
ca.add_extensions([
@@ -35,7 +38,7 @@ def create_ca():
return key, ca
-def dummy_ca(path):
+def dummy_ca(path, o=default_o, cn=default_cn, exp=default_exp):
dirname = os.path.dirname(path)
if not os.path.exists(dirname):
os.makedirs(dirname)
@@ -45,7 +48,7 @@ def dummy_ca(path):
else:
basename = os.path.basename(path)
- key, ca = create_ca()
+ key, ca = create_ca(o=o, cn=cn, exp=exp)
# Dump the CA plus private key
f = open(path, "wb")
@@ -92,24 +95,16 @@ def dummy_cert(ca, commonname, sans):
ca = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, raw)
key = OpenSSL.crypto.load_privatekey(OpenSSL.crypto.FILETYPE_PEM, raw)
- req = OpenSSL.crypto.X509Req()
- subj = req.get_subject()
- subj.CN = commonname
- req.set_pubkey(ca.get_pubkey())
- req.sign(key, "sha1")
- if ss:
- req.add_extensions([OpenSSL.crypto.X509Extension("subjectAltName", True, ss)])
-
cert = OpenSSL.crypto.X509()
cert.gmtime_adj_notBefore(-3600)
cert.gmtime_adj_notAfter(60 * 60 * 24 * 30)
cert.set_issuer(ca.get_subject())
- cert.set_subject(req.get_subject())
+ cert.get_subject().CN = commonname
cert.set_serial_number(int(time.time()*10000))
if ss:
cert.set_version(2)
cert.add_extensions([OpenSSL.crypto.X509Extension("subjectAltName", True, ss)])
- cert.set_pubkey(req.get_pubkey())
+ cert.set_pubkey(ca.get_pubkey())
cert.sign(key, "sha1")
return SSLCert(cert)