Zelf-ondertekend certificaat maken met OpenSSL
Op het Internet kan een website over HTTPS bereikt worden waarbij het verkeer gecodeerd wordt en de identiteit van de server gegarandeerd wordt. In e-mailverkeer kunnen e-mails via S/MIME worden gecodeerd en voorzien van digitale handtekeningen. Hiervoor is wel een beveiligingscertificaat nodig, zoals de mijne. Hieronder zal ik uitleggen hoe u met OpenSSL voor uw eigen website en e-mailadres zo’n certificaat kunt maken.
Eerst moet u de cryptografische software OpenSSL hebben. U kunt dit los van de website of gebundeld met de Apache-serversoftware downloaden. In dit laatste geval staat openssl.exe
in de map bin
en het configuratiebestand in de map conf
.
OpenSSL wordt aangestuurt vanuit de opdrachtprompt. Open hierin de map waarin openssl.exe
staat en voer de volgende commando’s uit.
- Genereer een privésleutel. De bestandsnaam (
F:\privesleutel.pem
) en de moduluslengte in bits (4096
) zijn naar keuze.openssl genrsa -out "F:\privesleutel.pem" 4096 Loading 'screen' into random state - done Generating RSA private key, 4096 bit long modulus .......................................................................................................................++ ............................................................++ e is 65537 (0x10001)
- Stel de certificaatondertekeningsaanvraag op. De bestandsnaam (
F:\aanvraag.csr
) is naar keuze. Zorg dat de config-parameter (openssl.cnf
) naar het configuratiebestand van OpenSSL verwijst (er kan een pad worden ingevoerd). OpenSSL vraag vervolgens om aanvullende informatie. Bij Common Name moet de hostnaam van de server (*.example.com
) worden ingevuld waarvoor het certificaat geldig is. Dit moet gebeuren zoals bezoekers die in hun adresbalk typen. Het sterretje betekent in dit geval dat het certificaat voor alle subdomeinen geldig is. Bij Email Address moet het e-mailadres (jantje&E1;
) worden ingevuld waarvoor het certificaat geldig is. De ‘extra attributen’ kunnen leeg worden gelaten.openssl req -new -key "F:\privesleutel.pem" -out "F:\aanvraag.csr" -config "openssl.cnf" Loading 'screen' into random state - done You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:NL State or Province Name (full name) [Some-State]:Noord-Holland Locality Name (eg, city) []:Amsterdam Organization Name (eg, company) [Internet Widgits Pty Ltd]:Jan Janssen Organizational Unit Name (eg, section) []:. Common Name (eg, YOUR name) []:*.example.com Email Address []:jantje&E1; Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
- Onderteken de aanvraag. Dit kan ook door een certificaatautoriteit (CA) worden gedaan, wat meestal geld kost, maar als voordeel heeft dat de echtheid van het certificaat door anderen automatisch wordt vertrouwd. Hier wordt echter een zelf-ondertekend certificaat gemaakt, wat betekent dat u zelf voor veilige distributie van het certificaat moet zorgen. De geldigheidsduur in dagen (
365
) en de bestandsnaam van het certificaat (F:\certificaat.crt
) zijn naar keuze.openssl x509 -req -days 365 -in "F:\aanvraag.csr" -signkey "F:\privesleutel.pem" -out "F:\certificaat.crt" Loading 'screen' into random state - done Signature ok subject=/C=NL/ST=Noord-Holland/L=Amsterdam/O=Jan Janssen/CN=*.example.com/emailAddress=jantje&E1; Getting Private key
- Combineer tot slot voor uzelf de privésleutel en het certificaat tot een sleutelpaar. Het wachtwoord kan leeg worden gelaten.
openssl pkcs12 -export -out "F:\sleutelpaar.pfx" -in "F:\certificaat.crt" -inkey "F:\privesleutel.pem" Loading 'screen' into random state - done Enter Export Password: Verifying - Enter Export Password:
Alle is nu klaar voor gebruik. Geef — uitsluitend — F:\certificaat.crt
aan iedereen die beveiligd met u wil communiceren. Dit certificaat moeten zij installeren in hun browser en e-mailprogramma om uw server via HTTPS te bezoeken respectievelijk e-mailverkeer met u te kunnen beveiligen.
Voeg zelf de volgende code aan httpd.conf
toe om HTTPS-ondersteuning in uw Apache-webserver aan te zetten:
LoadModule ssl_module modules/mod_ssl.so Listen 443 SSLRandomSeed startup builtin SSLRandomSeed connect builtin <VirtualHost _default_:443> SSLEngine On SSLCertificateFile "F:/certificaat.crt" SSLCertificateKeyFile "F:/privesleutel.pem" </VirtualHost>
Importeer zelf F:\sleutelpaar.pfx
in uw e-mailprogramma om digitale handtekeningen te kunnen zetten en ontvangen e-mails te kunnen ontcijferen.