make then make install
de primaire functie van SSL op het Internet is het vergemakkelijken van encryptie en vertrouwen, waardoor een webbrowser de authenticiteit van een website kan valideren. SSL werkt echter ook andersom – client SSL certificaten kunnen worden gebruikt om een client te authenticeren op de webserver. Denk aan SSH publieke / private sleutelparen, als dat je bekend is. In deze blogpost zal ik een overzicht geven van de stappen om een certificaat authoriteit certificaat te maken, een server certificaat te ondertekenen en te installeren in Apache, en maak een client cert in een formaat dat wordt gebruikt door webbrowsers.
het installeren van een besturingssysteem en Apache valt buiten het bereik van de blogpost en ik neem aan dat u een functionerende Apache installatie hebt voordat we beginnen. Ik gebruik een Ubuntu 12.04.4-systeem in deze blogpost.
Genereer een CA-certificaat
de eerste stap is het genereren van een CA-certificaat. Dit CA-certificaat hoeft niet op uw webserver te worden gegenereerd – het kan op elke machine worden geplaatst die u gebruikt om SSL-certificaten te genereren. Eenmaal aangemaakt, zal het CA-cert fungeren als de vertrouwde autoriteit voor zowel uw server-als client-certs. Het is het equivalent van de Verisign of Comodos in de echte wereld van SSL, maar je zou niet willen gebruiken uw CA cert voor een grote openbare website als het vertrouwen is niet van plan om te worden ingebouwd in browsers overal.
genereer uw CA-certificaat met dit commando:
openssl req -newkey rsa:4096 -keyform PEM -keyout ca.key -x509 -days 3650 -outform PEM -out ca.cer
hou ze dan geheim. hou ze veilig. Als iemand deze bestanden te pakken zou krijgen, zouden ze in staat zijn om server-en client-certs te genereren die door onze webserver zouden worden vertrouwd, zoals het hieronder zal worden geconfigureerd.
genereer uw Apache server SSL sleutel en certificaat
nu we ons CA cert hebben, kunnen we het SSL certificaat genereren dat door Apache zal worden gebruikt.
- Genereer een server-private sleutel.
openssl genrsa -out server.key 4096
- gebruik de privésleutel van de server om een certificaatgeneratieaanvraag te genereren.
openssl req -new -key server.key -out server.req -sha256
- gebruik de certificaatgeneratieaanvraag en het CA-cert om het servercertificaat te genereren.
openssl x509 -req -in server.req -CA ca.cer -CAkey ca.key -set_serial 100 -extensions server -days 1460 -outform PEM -out server.cer -sha256
- opschonen-nu het cert is aangemaakt, hebben we het verzoek niet langer nodig.
rm server.req
installeer het servercertificaat in Apache
mijn server draait Ubuntu 12.04.4 dus alle paden en commando ‘ s waarnaar hier wordt verwezen zijn voor dat besturingssysteem.
- kopieer het CA-certificaat naar een vaste plaats. We moeten onze ca cert specificeren in Apache omdat het een zelf gegenereerde CA is en niet een die overal in besturingssystemen is opgenomen.
cp ca.cer /etc/ssl/certs/
- kopieer het servercertificaat en de privésleutel naar de vaste plaats.
cp server.cer /etc/ssl/certs/server.crtcp server.key /etc/ssl/private/server.key
- Activeer de SSL-module in Apache.
a2enmod ssl
- Activeer de SSL-site in Apache en schakel de HTTP-site uit.
a2ensite default-ssla2dissite default
- bewerken /etc/apache2 / sites-enabled / 000-default-ssl (het configuratiebestand voor de SSL-enabled site) en toevoegen:
SSLCACertificateFile /etc/ssl/certs/ca.cerSSLCertificateFile /etc/ssl/certs/server.crtSSLCertificateKeyFile /etc/ssl/private/server.key
- Pas de configuratie toe in Apache.
service apache2 restart
op dit moment als u uw HTTPS-site bezoekt, krijgt u een SSL-fout vergelijkbaar met “SSL peer was niet in staat om een aanvaardbare set van beveiligingsparameters te onderhandelen.”Dat is goed – het betekent dat uw site zal geen verbinding te accepteren, tenzij uw browser is met behulp van een vertrouwde client cert. We genereren er nu een.
Genereer een SSL-certificaat
- Genereer een private sleutel voor de SSL-client.
openssl genrsa -out client.key 4096
- gebruik de privésleutel van de client om een cert-aanvraag te genereren.
openssl req -new -key client.key -out client.req
- geef het clientcertificaat af met behulp van de CERT-aanvraag en de CA-cert/key.
openssl x509 -req -in client.req -CA ca.cer -CAkey ca.key -set_serial 101 -extensions client -days 365 -outform PEM -out client.cer
- converteer het clientcertificaat en de privésleutel naar pkcs # 12-indeling voor gebruik door browsers.
openssl pkcs12 -export -inkey client.key -in client.cer -out client.p12
- opschonen-verwijder de client private key, client cert en client request bestanden omdat de pkcs12 alles heeft wat nodig is.
rm client.key client.cer client.req
lijkt op een vergelijkbaar proces als het genereren van een server certificaat, hè?
ten slotte, importeer de .p12 bestand in uw browser. Op Windows kunt u dubbelklikken op het bestand te importeren in het besturingssysteem keystore die zal worden gebruikt door IE en Chrome. Open in Firefox de opties – > Geavanceerd – > certificaten – > certificaten weergeven – > uw certificaten en importeer het certificaat.
bezoek nu uw website met de browser waar u het clientcertificaat hebt geïmporteerd. Waarschijnlijk wordt u gevraagd welk clientcertificaat u wilt gebruiken: Selecteer het. Dan word je geauthenticeerd en binnengelaten!