onsdag 27 februari 2008

Skapa "self signed" servercertifikat

För att köra SSL (HTTPS etc) krävs ett certifikat (en publik nyckel signerad av en "Certificate Authority"). Ofta finns inget behov av att nyckeln är signerad av en "Certificate Authority" utan det räcker att man skapar och signerar nyckeln själv. Enda skillnaden är att browsers och andra verktyg som tolkar nyckeln kan (och bör) reagera på att nyckeln inte är signerad av ett känt "Certificate Authority".

För att skapa ett "self signed" ssl-certifikat kan man göra på följande sätt (för tomcat webserver):

1. Skapa ett keystore med hjälp av keytool genom att köra följande kommando
keytool -genkey -alias tomcat -keyalg RSA

Ange keystore-lösenord: password
Vad heter du i för- och efternamn? [Unknown]: localhost
Vad heter din avdelning inom organisationen? [Unknown]: Support
Vad heter din organisation? [Unknown]: Testing AB
Vad heter din ort eller plats? [Unknown]: Gothenburg
Vad heter ditt land eller din provins? [Unknown]: Vastra Gotaland
Vilken är den tvåställiga landskoden? [Unknown]: SE
Är CN=localhost, OU=Support, O=Testing AB, L=Gothenburg, ST=Vastra Gotaland, C=SE korrekt? [nej]: j

Ange nyckellösenord för (RETURN om det är identiskt med keystore-lösenordet): password

Viktigt är att ange adressen (localhost eller yourdomain.com) certifikatet ska gälla för när keytool frågar efter för- och efternamn samt att ange samma lösenord för nyckeln som för själva keystore

2. Om man vill godkänna certifikatet på en maskin måste cerifikatet installeras. Exportera först servercertifikatet i keystore till filen server.cer genom att köra kommandot:

keytool -export -alias tomcat -keystore yourkeystorefile -storepass xxx -file server.cer

sen installerar man certifikatet i Trusted Root Certification Authorities i Windows genom att dubbelklicka på server.cer och välja "Trusted Certification..."

3. Om man vill använda certifikatet i en Javaapplikation måste certifikatet importeras i filen cacerts (JAVA_HOME\jre\lib\security) genom att köra kommandot:

keytool -import -trustcacerts -keystore cacerts -storepass changeit -noprompt -alias tomcat -file server.cer

eller genom att köra java programmet InstallCert och sen byta namn på resultatfilen jssecacerts till cacerts och ersätta den befintliga filen cacerts i JAVA_HOME\jre\lib\security\ (Observera att en webbserver måste vara igång och lyssna på port 443):

java InstallCert localhost

1 kommentar:

Anonym sa...

Riktigt bra information! Tack för den :)