make then make install
SSL: s primära funktion på Internet är att underlätta kryptering och förtroende som gör att en webbläsare för att validera äktheten av en webbplats. SSL fungerar dock tvärtom – klient SSL-certifikat kan användas för att autentisera en klient till webbservern. Tänk SSH offentliga / privata nyckelpar, om det är bekant för dig. I det här blogginlägget kommer jag att beskriva stegen för att skapa en certifikatutfärdare certifikat, underteckna ett servercertifikat och installera det i Apache, och skapa en klient cert i ett format som används av webbläsare.
installera ett operativsystem och Apache ligger utanför blogginlägget och jag antar att du har en fungerande Apache-installation innan vi börjar. Jag använder ett Ubuntu 12.04.4-system i det här blogginlägget.
generera en certifikatutfärdare (CA) cert
det första steget är att generera ett CA-certifikat. Detta CA-certifikat behöver inte genereras på din webbserver – det kan sitta på vilken maskin du använder för att generera SSL-certifikat. När certifikatutfärdaren har skapats fungerar den som den betrodda auktoriteten för både server-och klientcertifikaten. Det motsvarar Verisign eller Comodos i den verkliga världen av SSL, men du skulle inte vilja använda din CA cert för en stor offentlig webbplats eftersom dess förtroende inte kommer att byggas in i webbläsare överallt.
generera ditt CA-certifikat med det här kommandot:
openssl req -newkey rsa:4096 -keyform PEM -keyout ca.key -x509 -days 3650 -outform PEM -out ca.cer
håll dem hemliga-håll dem säkra. Om någon skulle få tag på dessa filer skulle de kunna generera server-och klientcertifikat som skulle vara betrodda av vår webbserver eftersom den kommer att konfigureras nedan.
generera din apache server SSL-nyckel och certifikat
nu när vi har vår CA cert kan vi generera SSL-certifikatet som kommer att användas av Apache.
- generera en server privat nyckel.
openssl genrsa -out server.key 4096
- använd serverns privata nyckel för att generera en begäran om generering av certifikat.
openssl req -new -key server.key -out server.req -sha256
- använd certifikatgenereringsbegäran och CA-certifikatet för att generera servercertifikatet.
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
- rensa upp – nu när cert har skapats behöver vi inte längre begäran.
rm server.req
installera servercertifikatet i Apache
min server kör Ubuntu 12.04.4 så alla sökvägar och kommandon som refereras här är för det operativsystemet.
- kopiera ca-certifikatet till en permanent plats. Vi måste ange vår CA cert i Apache eftersom det är en självgenererad CA och inte en som ingår i operativsystem överallt.
cp ca.cer /etc/ssl/certs/
- kopiera server cert och privat nyckel till permanent plats.
cp server.cer /etc/ssl/certs/server.crtcp server.key /etc/ssl/private/server.key
- Aktivera SSL-modulen i Apache.
a2enmod ssl
- Aktivera SSL-webbplatsen i Apache och inaktivera HTTP-webbplatsen.
a2ensite default-ssla2dissite default
- redigera / etc / apache2 / sites-enabled / 000-default-ssl (konfigurationsfilen för SSL-aktiverad webbplats) och Lägg till:
SSLCACertificateFile /etc/ssl/certs/ca.cerSSLCertificateFile /etc/ssl/certs/server.crtSSLCertificateKeyFile /etc/ssl/private/server.key
- använd konfigurationen i Apache.
service apache2 restart
just nu om du besöker din https-webbplats får du ett SSL-fel som liknar ”SSL peer kunde inte förhandla om en acceptabel uppsättning säkerhetsparametrar.”Det är bra – det betyder att din webbplats inte accepterar en anslutning om inte din webbläsare använder en betrodd klientcertifikat. Vi genererar en nu.
generera ett klient SSL-certifikat
- generera en privat nyckel för SSL-klienten.
openssl genrsa -out client.key 4096
- använd klientens privata nyckel för att generera en cert-begäran.
openssl req -new -key client.key -out client.req
- utfärda klientcertifikatet med hjälp av cert-begäran och ca-cert/ – nyckeln.
openssl x509 -req -in client.req -CA ca.cer -CAkey ca.key -set_serial 101 -extensions client -days 365 -outform PEM -out client.cer
- konvertera klientcertifikatet och den privata nyckeln till PKCS#12-format för användning av webbläsare.
openssl pkcs12 -export -inkey client.key -in client.cer -out client.p12
- rensa upp – ta bort klientens privata nyckel, klient cert och klientförfrågningsfiler eftersom pkcs12 har allt som behövs.
rm client.key client.cer client.req
ser ut som en ganska liknande process för att generera ett servercertifikat, va?
slutligen, importera .P12-fil i din webbläsare. I Windows kan du dubbelklicka på filen för att importera till operativsystemets nyckelbutik som kommer att användas av IE och Chrome. För Firefox, öppna alternativen – > Avancerat -> certifikat -> Visa certifikat -> dina certifikat och importera certifikatet.
besök nu din webbplats med webbläsaren där du importerade klientcertifikatet. Du kommer sannolikt att bli uppmanad till vilket klientcertifikat du ska använda-Välj det. Då kommer du att autentiseras och tillåtas!