Jean-Paul Calderone | 897bc25 | 2008-02-18 20:50:23 -0500 | [diff] [blame] | 1 | """ |
| 2 | Create certificates and private keys for the 'simple' example. |
| 3 | """ |
| 4 | |
Hynek Schlawack | 8b7e455 | 2016-03-13 07:51:09 +0100 | [diff] [blame] | 5 | from __future__ import print_function |
| 6 | |
Jean-Paul Calderone | 897bc25 | 2008-02-18 20:50:23 -0500 | [diff] [blame] | 7 | from OpenSSL import crypto |
Hynek Schlawack | 8b7e455 | 2016-03-13 07:51:09 +0100 | [diff] [blame] | 8 | from certgen import ( |
| 9 | createKeyPair, |
| 10 | createCertRequest, |
| 11 | createCertificate, |
| 12 | ) |
| 13 | |
| 14 | cakey = createKeyPair(crypto.TYPE_RSA, 2048) |
Jean-Paul Calderone | 897bc25 | 2008-02-18 20:50:23 -0500 | [diff] [blame] | 15 | careq = createCertRequest(cakey, CN='Certificate Authority') |
Hynek Schlawack | 8b7e455 | 2016-03-13 07:51:09 +0100 | [diff] [blame] | 16 | # CA certificate is valid for five years. |
| 17 | cacert = createCertificate(careq, (careq, cakey), 0, (0, 60*60*24*365*5)) |
Jim Shaver | 0529886 | 2015-04-29 01:09:13 -0400 | [diff] [blame] | 18 | |
Jim Shaver | 6b5d381 | 2015-04-25 17:45:53 -0400 | [diff] [blame] | 19 | print('Creating Certificate Authority private key in "simple/CA.pkey"') |
Jim Shaver | aab9ddd | 2015-04-29 23:11:48 -0400 | [diff] [blame] | 20 | with open('simple/CA.pkey', 'w') as capkey: |
Hynek Schlawack | 8b7e455 | 2016-03-13 07:51:09 +0100 | [diff] [blame] | 21 | capkey.write( |
| 22 | crypto.dump_privatekey(crypto.FILETYPE_PEM, cakey).decode('utf-8') |
| 23 | ) |
| 24 | |
Jim Shaver | 6b5d381 | 2015-04-25 17:45:53 -0400 | [diff] [blame] | 25 | print('Creating Certificate Authority certificate in "simple/CA.cert"') |
Jim Shaver | aab9ddd | 2015-04-29 23:11:48 -0400 | [diff] [blame] | 26 | with open('simple/CA.cert', 'w') as ca: |
Hynek Schlawack | 8b7e455 | 2016-03-13 07:51:09 +0100 | [diff] [blame] | 27 | ca.write( |
| 28 | crypto.dump_certificate(crypto.FILETYPE_PEM, cacert).decode('utf-8') |
| 29 | ) |
Jim Shaver | 0529886 | 2015-04-29 01:09:13 -0400 | [diff] [blame] | 30 | |
Hynek Schlawack | 8b7e455 | 2016-03-13 07:51:09 +0100 | [diff] [blame] | 31 | for (fname, cname) in [('client', 'Simple Client'), |
| 32 | ('server', 'Simple Server')]: |
| 33 | pkey = createKeyPair(crypto.TYPE_RSA, 2048) |
Jean-Paul Calderone | 897bc25 | 2008-02-18 20:50:23 -0500 | [diff] [blame] | 34 | req = createCertRequest(pkey, CN=cname) |
Hynek Schlawack | 8b7e455 | 2016-03-13 07:51:09 +0100 | [diff] [blame] | 35 | # Certificates are valid for five years. |
| 36 | cert = createCertificate(req, (cacert, cakey), 1, (0, 60*60*24*365*5)) |
Jim Shaver | aab9ddd | 2015-04-29 23:11:48 -0400 | [diff] [blame] | 37 | |
Hynek Schlawack | 8b7e455 | 2016-03-13 07:51:09 +0100 | [diff] [blame] | 38 | print('Creating Certificate %s private key in "simple/%s.pkey"' |
| 39 | % (fname, fname)) |
| 40 | with open('simple/%s.pkey' % (fname,), 'w') as leafpkey: |
| 41 | leafpkey.write( |
| 42 | crypto.dump_privatekey(crypto.FILETYPE_PEM, pkey).decode('utf-8') |
| 43 | ) |
| 44 | |
| 45 | print('Creating Certificate %s certificate in "simple/%s.cert"' |
| 46 | % (fname, fname)) |
| 47 | with open('simple/%s.cert' % (fname,), 'w') as leafcert: |
| 48 | leafcert.write( |
| 49 | crypto.dump_certificate(crypto.FILETYPE_PEM, cert).decode('utf-8') |
| 50 | ) |