Java Keytool - Aanmaken CSR

Voor het aanvragen van een SSL certificaat is een Certificate Signing Request (CSR) nodig. Genereer de CSR samen met de Private Key op de webserver. Vul voor een wildcard certificaat als CN (Common Name) een * (asterisk) in in plaats van het subdomein, bijvoorbeeld *.sslcertificaten.nl (en geen www.sslcertificaten.nl).

Er zijn diverse server- en routerprodukten die gebruik maken van Java. In Java zit het commando keytool, wat gebruikt kan worden om certificaten te beheren. Deze handleiding omschrijft hoe met keytool een Private Key en een CSR kunnen worden aangemaakt. Als voorbeeld wordt hier als standaardmap /etc/ssl/cert/ aangehouden, en wordt www.sslcertificaten.nl als voorbeeld FQDN gebruikt. Vervang zodoende in de onderstaande voorbeeldcommando's www.sslcertificaten.nl met de domeinnaam waarvoor het certificaat moet worden aangevraagd.

Het is aan te raden deze handelingen uit te voeren vauit een SSH sessie, aangezien de CSR dan eenvoudig kan worden gekopiëerd naar een browser voor het indienen van de aanvraag. Hieronder wordt eerst een keypair aangemaakt. Daarna wordt aan de hand hiervan de CSR aangemaakt.

Aanmaken Private Key

  1. Log in op de server als root.
  2. Maak een map aan om de certificaatbestanden in te bewaren en navigeer hier naar toe:[root@server]# mkdir /etc/ssl/cert[root@server]# cd /etc/ssl/cert
  3. Maak uw Private Key aan met het volgende commando:[root@server cert]# $JAVA_HOME/bin/keytool -genkey -keysize 2048 -alias www_sslcertificaten_nl -keyalg RSA -keystore www_sslcertificaten_nl.jksHierbij betekenen de in het commando gebruikte switches het volgende:
    • -genkey - geeft aan dat een nieuw keypair (private key + public key) dient te worden aangemaakt.
    • -alias [naam] - geeft een unieke benaming voor de keypair binnen keytool.
    • -keyalg [encryptiealgoritme] - geeft aan welk encryptiealgoritme dient te worden gebruikt, in dit geval dus RSA.
    • -keystore [bestandsnaam] - geeft aan hoe de keystore (het bestand waar de certificaten beveiligd in worden opgeslagen) moet heten. De keystore wordt altijd beveiligd met een wachtwoord.
    Let op: indien er wordt werkt vanuit Windows dient $JAVA_HOME te worden vervangen met %JAVA_HOME%.
  4. Geef een uniek wachtwoord op om de Private Key te beveiligen, en bewaar deze zorgvuldig. (Standaard is changeit).
  5. Vul de vereiste velden met organisatiegegevens in. Let op: Bij de vraag "What is your first and last name?" is de zin erg verwarrend - hier dient de domeinnaam op te worden gegeven waarvoor het certificaat wordt besteld (dus bijvoorbeeld www.sslcertificaten.nl, en niet uw voor- en achternaam).
  6. Er wordt gevraagd of de ingevoerde gegevens correct zijn:Is CN=www.sslcertificaten.nl, OU=Xolphin Support, O=Xolphin B.V., L=Heerhugowaard, ST=Noord-Holland, C=NL correct?[no]:Typ yes gevolgd door Enter.
  7. Er wordt gevraagd om het keystore-wachtwoord. Geef hetzelfde wachtwoord op als wat is opgegeven voor het beveiligen van de certificate store in stap 4. Enter key password for <www_sslcertificaten_nl>(RETURN if same as keystore password):Let op: een verkeerd wachtwoord kan leiden tot de volgende foutmelding: java.security.UnrecoverableKeyException: Cannot recover key. Probeer het in dat geval nogmaals.

Aanmaken CSR

  1. Maak als volgt de CSR aan:[root@server cert]# $JAVA_HOME/bin/keytool -certreq -keyalg RSA -alias www_sslcertificaten_nl -file www_sslcertificaten_nl.csr -keystore www_sslcertificaten_nl.jksHierbij worden de volgende switches gebruikt:
    • -certreq - geeft aan dat er een CSR moet worden gegenereerd aan de hand van de net aangemaakte Public Key
    • -file [bestandsnaam] - geeft aan wat het bestandsnaam van de CSR moet worden
  2. Beveilig de inhoud van deze map zodat alleen de rootgebruiker erbij kan:[root@server cert]# chmod 600 *.key *.csr *.jks
  3. Het bestand www_sslcertificaten_nl.csr is de Certificate Signing Request. Het kan worden ingezien met behulp van het cat-commando:[root@server cert] cat www_sslcertificaten_nl.csr

Kopieer de volledige inhoud van de aangemaakte CSR, inclusief begin- en eindregels, om een certificaat te bestellen. 

Certificaat aanvragen

Gerelateerde artikelen:

Java keytool - Installatie certificaat
Java Keytool - documentatie (extern, engels)

SSLCheck

De SSLCheck controleert of je certificaat goed op je server is geïnstalleerd en of er mogelijke problemen zijn.