OpenSSL [1] verweisen in ihrer FAQ [2] für die Win32 Binaries auf folgende Seite: http://www.slproweb.com/products/Win32OpenSSL.html
Oft braucht man als Administrator nur ein SSL-Zertifikat für die eigene Webseite, um diese über HTTPS bereitstellen zu können. Ein gekauftes Zertifikat ist oft für den hausinternen Gebrauch zuviel des Guten. Andererseits sind Zertifikatsdienste von Microsoft manchmal an dieser Stelle ein wenig oversized.
Microsoft selbst bietet für den kleinen Hausgebrauch die selfssl.exe aus dem IIS 6.0 Resource Kit [3]. Um ein zwei Jahre (/V:730) gültiges Zertifikat für meinen Computer (/N:CN=hostname.meinedom.intern) zu erstellen, das mit einen 1024 Bit Schlüssel (/K:1024) arbeitet und sich direkt auf meiner Default-Website, Standardwebseite (S:1) für den Standardport HTTPS etabliert (/P:443), kann folgender Befehl verwendet werden:
selfssl.exe /N:CN=hostname.meinedom.intern /K:1024 /V:730 /S:1 /P:443
Die Nachteile:
- Ich kann das Zertifikat nur direkt in den IIS hinzufügen, er muss auf dem System laufen, auf dem die EXE gestartet wird.
- Es können keine weiteren Informationen wie Firmenname/Aussteller, Zweck, Land, Organisation etc. hinterlegt werden.
- Ich muss pro SSL verschlüsselter Seite ein Zertifikat erstellen und dieses bei meinen Clients einzeln importieren, damit es als vertrauenswürdig angenommen wird.
- Es gibt kein „Root-Zertifikat“, von dem „alle“ weiteren abstammen.
Sicherlich kann man diese Nachteile für den internen Gebrauch in Kauf nehmen. Muss man aber nicht.
Wem die MS-eigene Zertifizierungsstelle nun nicht gefällt, der kann auf OpenSSL zurückgreifen. Es wird damit sicherlich nicht weniger komplex, was die Zertifikatsthematik generell betrifft, aber die Absicherung der Zertifikate mit OpenSSL ist doch etwas einfacher, da sie im Dateisystem stattfindet.
Achtung: Das birgt aber auch die Gefahr des Missbrauchs, da es so einfach ist.
Step-By-Step
Herunterladen des Win32-Binary und in einem beliebigen Ordner entpacken, z.b.: C:\Programme\OpenSSL.
CMD öffnen und in das Verzeichnis C:\Programme\OpenSSL\bin wechseln
Step 1: Erstellen der CA (Certifikate Authority/Zertifizierungsstelle)
Erstellung des Private Key (Privater Schlüssel)
openssl genrsa -des3 -out firma-private.key 1024
Loading ’screen‘ into random state – done
Generating RSA private key, 1024 bit long modulus
………………++++++
..++++++
e is 65537 (0x10001)
Enter pass phrase for firma-private.key:
Verifying – Enter pass phrase for firma-private.key:
Step 2: Erstellen des Root-Zertifikats.
openssl req -config .\openssl.cnf -new -key firma-private.key -x509 -days 1825 -out firma-ca.crt
Enter pass phrase for firma-private.key:
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]:DE
State or Province Name (full name) [Some-State]:Niedersachsen
Locality Name (eg, city) []:Hannover
Organization Name (eg, company) [Internet Widgits Pty Ltd]:faq-o-matic.net
Organizational Unit Name (eg, section) []:Step-by-Step Guides
Common Name (eg, YOUR name) []:ssl.faq-o-matic.net
Email Address []:xxxx@xxx-x-xxxxx.xxx
Step 3: Erstellen des CSR (Certificate Signing Request) erfolgt am System, wo der IIS läuft
- Internetinformationsdienste-Manager starten
- zur Seite navigieren, für die das Zertifikat sein wird
- rechte Maustaste, Kontextmenü -> Eigenschaften
- Reiter „Verzeichnissicherheit“
- Schaltfläche „Server Zertifikate“
- Dem Assitenten zur Erstellung einer Zertifikatsanfrage folgen
- Neues Zertifikat erstellen
- Anforderung jetzt vorbereiten, aber später senden
- Den Request speichern -> C:\Programme\OpenSSL\bin\certreq.txt
Step 4: Signieren der CSR in der Authentifizierungstelle
openssl x509 -req -days 730 -in certreq.txt -CA firma-ca.crt -CAkey firma-private.key -CAcreateserial -out extern-server.crt
Loading ’screen‘ into random state – done
Signature ok
subject=/C=DE/ST=Bavaria/L=Hannover/O=faq-o-matic/OU=Step-by-Step Guides/CN=ssl.faq-o-matic.net
Getting CA Private Key
Enter pass phrase for firma-private.key:
Step 5: Import des Zertifikats extern-server.crt im IIS
Am Ende wurden folgende Dateien erstellt:
firma-private.key | Der private Schlüssel der CA, AUFHEBEN! |
firma-ca.crt | Das Root-Zertifikat der CA, AUFHEBEN Schönheitspreis: Verteilen dieses Zertifikats an alle Clients per Gruppenrichtlinie: Computerkonfiguration\Lokale Richtlinie\Richtlinie für öffentliche Schlüssel\Vertrauenswürdige Stammzertifizierungsstellen |
firma-ca.srl | Die Seriennummer der CA, der Name wird automatisch gewählt, wenn im Schritt 2 „-out firma-ca.crt“angegeben wird, erhält die .srl ebenfalls „firma-ca“ |
certreq.txt | Der Request, kann gelöscht werden |
extern-server.crt | Das Zertifikat für den Webserver, wird im IIS importiert |
[1] http://www.openssl.org/
[2] http://www.openssl.org/related/binaries.html
[3] http://www.microsoft.com/downloads/details.aspx?familyid=56FC92EE-A71A-4C73-B628-ADE629C89499&displaylang=en
http://faq-o-matic.net/?p=989