Blog van Jeroen van der Gun

Zelf-ondertekend certificaat maken met OpenSSL

24 augustus 2010, 20:08

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.

  1. 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)
  2. 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@example.com) 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@example.com
    
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:
    An optional company name []:
  3. 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@example.com
    Getting Private key
  4. 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.

Reacties (0)

Er zijn nog geen reacties. Wees de eerste.

opt.
opt.
6 × 1 =

Feeds Blogbelevenisoptimalisatie

  1. Informatie over de auteur staat op mijn portfoliosite, met name in mijn profiel.
  2. Voel u vrij te reageren op artikelen. Gaat uw reactie niet over een specifiek artikel, dan kunt u het gastenboek gebruiken.
  3. U kunt meldingen van nieuwe berichten ontvangen via feeds: zie de instructies. Dit geldt voor zowel blogitems als reacties.
Blognavigatie: 25 24 23 22 21 20 19
Copyright © 2005–2010 Jeroen van der Gun, alle rechten voorbehouden.
Lees mijn disclaimer en privacyverklaring.
Alle pagina’s van deze site zijn printvriendelijk.
W3C: XHTML 1.0 W3C: CSS level 2 Atom: Valid
Wat betekenen deze pictogrammen?