Certificaten

From PostgreSQL_wiki
Revision as of 18:55, 20 September 2012 by Martin (talk | contribs)
Jump to: navigation, search

Webhuis voorziet in eigen certificaten voor secured services. De traditionele encryptie gaat met Secure Socket Layer (SSL), maar sinds enige tijd is daar TLS. De Debian versie van toepassingen als openLDAP zijn sinds Lenny tegen Transport Layer Security (TLS) libriries gecompileerd.
Webhuis voorziet klanten van certificaten die zijn ondertekend door het RootCA van Webhuis. Bij gebruik van een browser verdient het de voorkeur om het RootCA van Webhuis te installeren als een "trusted Root Certificate".
Om de Webhuis certificaten goed te kunnen gebruiken is het verstandig om het RootCA te installeren.

SSL of TLS

TLS is in zekere zin de opvolger van SSL. TLS heeft twee belangrijke voordelen:

  • Een belangrijk voordeel van TLS ten opzichte van SSL is dat TLS was in een open-community standard tot stand is gekoemn. TLS is backwards compatible, en bieden de mogelijkheid om SSL verbindingen te ondersteunen voor secure client connecties voor clients die alleen SSL snappen.
  • TLS staat meerdere verbindingen toe, secure en niet secure over dezelfde poort. Je kunt dus meerdere secure websites op een en hetzelfde IP adres aanbieden.

Testen van certificaten

Certificaten bevatten eigenlijk niets anders dan een niets zeggend blok willekeurige cijfers en letters, waaruit in eerste aanzien niets valt op te maken.

openssl x509 -in test.webhuis.nl.cert.pem -noout -text

Onderzoek of certificaat en key matchen:

(openssl rsa -noout -modulus -in ldapm1.webhuis.nl.key-nopw.pem | openssl sha1 ;\
 openssl x509 -noout -modulus -in ldapm1.webhuis.nl.cert.pem | openssl sha1 ) | uniq
da39a3ee5e6b4b0d3255bfef95601890afd80709
root@ldapm1:/etc/ldap/ssl# 

Het resultaat moet een enkele fingerprint zijn, de afgebeelde fingerprint is een voorbeeld dat niet hoort bij het certificaat.

Certificaten maken

openssl req -new -days 2932 -key server.key -out server.csr -config openssl.cnf

openssl ca -config openssl.cnf -name  -extensions v3_ca -out server.crt -infiles server.csr

Client certificate
openssl req -newkey rsa:1024 -keyout msimons.key -config openssl.cnf -out msimons.req
openssl ca -config openssl.cnf -out msimons.crt -infiles msimons.req 

Host certificate
openssl req -newkey rsa:1024 -keyout webserver.key -nodes -config openssl.cnf -out webserver.req

openssl ca -config openssl.cnf -out webserver.crt -infiles webserver.req

Certificaten intrekken

Het genereren van een CRL gaat als volgt:

openssl ca -gencrl -keyfile cakey.pem -cert cacert.pem -out cacrl.pem -crldays 30

Het resultaat is een cacrl.pem dat 30 dagen geldig is.

Revoken:

openssl ca -revoke badcert.pem -keyfile cakey.pem -cert cacert.pem

Update can de CRL:

openssl ca -gencrl -config openssl.cnf -crldays 100 -out cacrl.pem

Denk eraan het bestand cacrl.pem te plaatsen op de URL uit de openssl.cnf

http://crl.webhuis.nl/cacrl.pem

Inspecteer de cetrificate revocation list met:

openssl crl -in cacrl.pem -noout -text

website met revoked certificate

https://testcrl.webhuis.nl

Het Webhuis rootCA

N.B. De werkelijke waarden zijn anders.

martin@wbhs-ca:~$ mkdir -p CA/newcerts CA/private

martin@wbhs-ca:~/CA$ echo "0000001" > serial
martin@wbhs-ca:~/CA$ touch index.txt
martin@wbhs-ca:~/CA$ openssl req -new -x509 -newkey rsa:1024 -days 365 -extensions v3_ca -keyout private/cakey.pem \
 -out cacert.pem -config /etc/ssl/openssl.cnf

martin@wbhs-ca:~/CA$ openssl x509 -in cacert.pem -noout -text
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            8d:35:d9:3c:46:c3:cb:d2
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=NL, ST=Gelderland, L=Renkum, O=Webhuis, OU=pki, CN=Martin Simons/emailAddress=martin@webhuis.nl
        Validity
            Not Before: Apr  9 22:23:46 2012 GMT
            Not After : Apr  9 22:23:46 2013 GMT
        Subject: C=NL, ST=Gelderland, L=Renkum, O=Webhuis, OU=pki, CN=Martin Simons/emailAddress=martin@webhuis.nl
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption

Terug naar: Webhuis Infrastructuur