aboutsummaryrefslogtreecommitdiffstats
path: root/doc-src/ssl.html
blob: 91225d79320b725dc16c54ca735f7fb68ee833df (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
The first time __mitmproxy__ or __mitmdump__ is run, a set of certificate files
for the mitmproxy Certificate Authority are created in the config directory
(~/.mitmproxy by default). This CA is used for on-the-fly generation of dummy
certificates for SSL interception. Since your browser won't trust the
__mitmproxy__ CA out of the box (and rightly so), you will see an SSL cert
warning every time you visit a new SSL domain through __mitmproxy__. When
you're testing a single site through a browser, just accepting the bogus SSL
cert manually is not too much trouble, but there are a many circumstances where
you will want to configure your testing system or browser to trust the
__mitmproxy__ CA as a signing root authority.


CA and cert files
-----------------

The files created by mitmproxy in the .mitmproxy directory are as follows: 

<table class="table">
    <tr>
        <td class="nowrap">mitmproxy-ca.pem</td>
        <td>The private key and certificate in PEM format.</td>
    </tr>
    <tr>
        <td class="nowrap">mitmproxy-ca-cert.pem</td>
        <td>The certificate in PEM format. Use this to distribute to most
        non-Windows platforms.</td>
    </tr>
    <tr>
        <td class="nowrap">mitmproxy-ca-cert.p12</td>
        <td>The certificate in PKCS12 format. For use on Windows.</td>
    </tr>
    <tr>
        <td class="nowrap">mitmproxy-ca-cert.cer</td>
        <td>Same file as .pem, but with an extension expected by some Android
        devices.</td>
    </tr>
</table>
    

Using a custom certificate
--------------------------

You can use your own certificate by passing the __--cert__ option to mitmproxy.

The certificate file is expected to be in the PEM format. You can generate
a certificate in this format using these instructions:

<pre class="terminal">
> openssl genrsa -out cert.key 8192
> openssl req -new -x509 -key cert.key -out cert.crt
    (Specify the mitm domain as Common Name, e.g. *.google.com)
> cat cert.key cert.crt > cert.pem
> mitmproxy --cert=cert.pem
</pre>


Installing the mitmproxy CA
---------------------------

* [Firefox](@!urlTo("certinstall/firefox.html")!@)
* [OSX](@!urlTo("certinstall/osx.html")!@)
* [Windows 7](@!urlTo("certinstall/windows7.html")!@)
* [iPhone/iPad](@!urlTo("certinstall/ios.html")!@)
* [IOS Simulator](@!urlTo("certinstall/ios-simulator.html")!@)
* [Android](@!urlTo("certinstall/android.html")!@)
n">MAX_SKBUFF_ORDER) { printk(KERN_ALERT "Attempt to allocate order %d skbuff. " "Increase MAX_SKBUFF_ORDER.\n", order); return NULL; } skb = alloc_skb_from_cache( skbuff_order_cachep[order], length, gfp_mask); if (skb != NULL) skb_reserve(skb, 16); return skb; } static void skbuff_ctor(void *buf, kmem_cache_t *cachep, unsigned long unused) { int order = 0; while (skbuff_order_cachep[order] != cachep) order++; if (order != 0) xen_create_contiguous_region((unsigned long)buf, order); scrub_pages(buf, 1 << order); } static void skbuff_dtor(void *buf, kmem_cache_t *cachep, unsigned long unused) { int order = 0; while (skbuff_order_cachep[order] != cachep) order++; if (order != 0) xen_destroy_contiguous_region((unsigned long)buf, order); } static int __init skbuff_init(void) { static char name[MAX_SKBUFF_ORDER + 1][20]; unsigned long size; int order; for (order = 0; order <= MAX_SKBUFF_ORDER; order++) { size = PAGE_SIZE << order; sprintf(name[order], "xen-skb-%lu", size); skbuff_order_cachep[order] = kmem_cache_create( name[order], size, size, 0, skbuff_ctor, skbuff_dtor); } skbuff_cachep = skbuff_order_cachep[0]; return 0; } __initcall(skbuff_init); EXPORT_SYMBOL(__dev_alloc_skb); /* * Local variables: * c-file-style: "linux" * indent-tabs-mode: t * c-indent-level: 8 * c-basic-offset: 8 * tab-width: 8 * End: */