Difference between revisions of "CA"

From Whitespace (Hackerspace Gent)
Jump to: navigation, search
(0x20 CA)
 
(3 intermediate revisions by one user not shown)
Line 5: Line 5:
 
|Short description=0x20 Certificate Authority CA
 
|Short description=0x20 Certificate Authority CA
 
}}
 
}}
 
+
= 0x20 Certificate Authority =
= 0x20 CA =
+
 
* CA with OpenSSL
 
* CA with OpenSSL
 
** all flat files in 1 directory
 
** all flat files in 1 directory
Line 38: Line 37:
 
<pre>
 
<pre>
 
$ openssl genrsa -aes256 -out 0x20-servername.key 2048
 
$ openssl genrsa -aes256 -out 0x20-servername.key 2048
$ openssl req -new -key 0x20-servername.key -nodes -out 0x20-members-vpn.csr
+
$ openssl req -new -key 0x20-servername.key -nodes -out 0x20-servername.csr
 
</pre>
 
</pre>
 
* Sign the certificate:
 
* Sign the certificate:
 
<pre>
 
<pre>
$ openssl ca -in 0x20-members-vpn-req.pem -cert ca-0x20-cert.pem -keyfile \
+
$ openssl ca -in 0x20-servername.csr -cert ca-0x20-cert.pem -keyfile \
  private/ca-0x20-key.pem -out 0x20-members-vpn.cert -config ./openssl.cnf
+
  private/ca-0x20-key.pem -out 0x20-servername.cert -config ./openssl.cnf
 
</pre>
 
</pre>
 
* check index.txt (= the CA db)
 
* check index.txt (= the CA db)
 +
 +
== Sign client cert ==
 +
* Change openssl.cnf to client settings:
 +
<pre>
 +
$ vi ./openssl.cnf
 +
nsCertType = client, email
 +
extendedKeyUsage=clientAuth
 +
</pre>
 +
* Sign the certificate:
 +
<pre>
 +
$ openssl ca -in 0x20-client.csr -cert ca-0x20-cert.pem -keyfile \
 +
private/ca-0x20-key.pem -out 0x20-client.cert -config ./openssl.cnf
 +
</pre>
 +
 +
== Create a pkcs12 ==
 +
<pre>
 +
$ openssl pkcs12 -export -in jaroslov.cert -inkey jaroslov.key -certfile ca.pem -name "jaroslov" -out jaroslov.p12
 +
</pre>
  
 
== Create a CRL ==
 
== Create a CRL ==

Latest revision as of 15:50, 11 April 2012


CA
WhitespaceLogo.gif
What:
0x20 Certificate Authority CA
Participants:
Jaroslov
Locations:
Whitespace
Cornify

0x20 Certificate Authority[edit]

  • CA with OpenSSL
    • all flat files in 1 directory
    • can easily be stored/transported on an encrypted filesystem
  • Used for OpenVPN authentication

openssl.cnf[edit]

Check the openssl.cnf file with the 0x20 specific values:

  • root ca is valid for 15 years
  • certificates are valid for 5 years
  • DN: C=BE, ST=Ghent, L=Whitespace, O=0x20, CN=0x20 root ca
  • nsCaRevocationUrl = http://www.0x20.be/ca-0x20-crl.pem
  • extendedKeyUsage=serverAuth (server certs)
  • extendedKeyUsage=clientAuth (client certs)

Create a CA[edit]

$ openssl req -new -x509 -days 5475 -newkey rsa:4096 -extensions v3_ca -keyout \ 
private/ca-0x20-key.pem -out ca-0x20-cert.pem -config ./openssl.cnf

Sign server cert[edit]

  • Change openssl.cnf to server settings:
$ vi ./openssl.cnf
nsCertType = server
extendedKeyUsage=serverAuth
  • If needed create the key and the csr (certificate signing request):
$ openssl genrsa -aes256 -out 0x20-servername.key 2048
$ openssl req -new -key 0x20-servername.key -nodes -out 0x20-servername.csr
  • Sign the certificate:
$ openssl ca -in 0x20-servername.csr -cert ca-0x20-cert.pem -keyfile \
 private/ca-0x20-key.pem -out 0x20-servername.cert -config ./openssl.cnf
  • check index.txt (= the CA db)

Sign client cert[edit]

  • Change openssl.cnf to client settings:
$ vi ./openssl.cnf
nsCertType = client, email
extendedKeyUsage=clientAuth
  • Sign the certificate:
$ openssl ca -in 0x20-client.csr -cert ca-0x20-cert.pem -keyfile \
 private/ca-0x20-key.pem -out 0x20-client.cert -config ./openssl.cnf

Create a pkcs12[edit]

$ openssl pkcs12 -export -in jaroslov.cert -inkey jaroslov.key -certfile ca.pem -name "jaroslov" -out jaroslov.p12

Create a CRL[edit]

$ openssl ca -gencrl -out crl/crl.pem -config ./openssl.cnf
  • (first time you need to populate the crlnumber file: $ echo "01" > crlnumber)

Revoke a certificate[edit]

  • Check the certificates in newcerts/
  • Revoke the needed one:
$ openssl ca -revoke newcerts/1000.pem -config ./openssl.cnf
  • distribute the crl where needed.