SSL-Zertifikate

Aus Doku-Wiki
Version vom 16. September 2015, 06:29 Uhr von Uli (Diskussion | Beiträge) (→‎Links zu freien SSL-Zertifikats-Anbietern)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springenZur Suche springen

Übersicht zum Thema SSL-Zertifikate

Es gibt zwei Möglichkeiten, wie man zu einem SSL-Zertifikat kommt.

  1. Offizielle Zertifizierungsstelle CA
  2. Eigene Zertifizierungsstelle CA
  • Um verschlüsselte Verbindung im Internet für Kunden anzubieten,
    sollte man ein Zertifikat bei einer offiziellen Zertifizierungsstelle kaufen.
    Das verhindert, dass der Kunden, der die Seite aufruft, Mmeldungen über ein Fehlerhaftes Zertifikat erhält.
  • Um verschlüsselte Verbindungen im internen Bereich anzubieten, kann amn sich die jährlichen Kosten für das offizielle Zertifikat sparen,
    wenn eine eigene Zertifizierungsstelle installiert wird. Dies ist unter Windows, wie auch unter Linux (sihe unten) möglich.

Dokumentationen

Links zu freien SSL-Zertifikats-Anbietern

Nützliche OpenSSL Befehle

  • Zertifikat download
openssl s_client -showcerts -connect $SERVERNAME:443 >/tmp/$SERVERNAME.cert

Artikel Heise.de

Eigene CA

Eine eigene CA zu installieren, gibt es unter Linux, wie immer, viele Möglichkeiten:

  1. [TinyCA]
  2. OpenSSL

In diese Doku wird auf die CA mittels OpenSSL eingegangen.

Installation

aptitude openssl

Verzeichnisse

  1. Konfiguration: /etc/ssl/
  2. Hilfs-Script: /usr/lib/ssl/misc/CA.sh
  • In der Datei /etc/ssl/openssl.cnf können Anpassungen für die eigene CA vorgenommen werden:
[ CA_default ]
dir             = ./MY-CA              # Where everything is kept
. . .
default_days    = 3650                 # how long to certify for
. . .
countryName                     = Country Name (2 letter code)
countryName_default             = DE

Wie hier zu sehen, kann jeder Wert der bei der Erstellung des Zertifikates abgefragt wird, mit einem Defaultwert vorbelegt werden.
Dazu wird in einer zweiten Zeile hinter den Wert (z.B. countryName) ein _default gesetz und mit eigenem Inhalt gefüllt.
OpenSSL bringt das Script CA.sh und CA.pl mit. Die Scripte sind gleich.

  • Setzt man folgenden Link auf dieses Script, kann es von überall aufgerufen werden:
ln -s /usr/lib/ssl/misc/CA.sh /usr/sbin

CA erstellen

# CA.sh -newca
  1. Es folgen nun abfragen zu den Eigenschalften der CA.
  2. Nach eingabe einer Phassphrase für die CA wird die CA im aktuellen Verzeichnis erstellt

Server-Zertifikat erstellen

Server-Request

# openssl req -newkey rsa:1024 -nodes -keyout newreq.pem -out newreq.pem

Hier müssen wieder Angaben zum Zertifikt gemacht werden.
WICHTIG: Es muss beim -Common Name (eg, YOUR name)- der Servername mit Domain angegeben werden.

Server-Request mit CA Zertifizieren

Achtung, beim Aufruf des folgenden Befehls muss man im Verzeichnis VOR der CA stehen:
Beispiel:

cd /etc/ssl
# ls al 
# demoCA
# CA.sh -sign

Mit diesem Befehl wird das Server-Zertifikat von der CA unterschrieben.

Extrahieren der Phassphrase aus dem Request

# openssl rsa -in newreq.pem -out Server01key.pem

Danach kann das Zertifikat newcert.pem in Server01cert.pem umbenannt werden,
so dass man später noch weiss, für welchen Server dass Zertifikat erstellt wurde.

# mv newcert.pem Server01cert.pem

Offizielle CA

Generierung des privaten Schlüssels

Zuerst wird der private Schlüssel erstellt und mit einer Passphrase gesichert:

openssl genrsa -des3 2048 > www.mydomain.de.key

Dieser Key sollte gut gesichert werden, ohne Ihn ist das später erstellte Zertifikate wertlos

Erzeugen des Zertifikat-Request

openssl req -new -key www.mydomain.de.key -out www.mydomain.de.csr

Nun folgen die Angaben, die später im Zertifikat angezeigt werden.

- Country Name: DE
- State or Province: Germany
- City: Karlsruhe
- Organization Name: Name der Firma
- Organization Unit Name: Abteilung
- Widgets Common Name: FQDN des Servers WICHTIG: Hier wird der Domainname der Website eingeragen
- E-Mail Adresse: Optional

Der erzeugte Request wird bei einer Root-Zertifizierungsstelle zur Signierung eingereicht.
Dies kann man bei Thawte testen, dort erhält man für eine eingeschränkte Zeit ein Testzertifikat.
Thawte Testzertifikate

Request bei der Zertifizierungsstelle einreichen

Nun sind zwei zwei Dateien vorhanden:

www.mydomain.de.key
www.mydomain.de.csr

Der Inhalt der Datei "www.mydomain.de.csr" wird an die Zertifizierungsstelle übermittelt.
Nach Prüfung der Personendaten wird das Zertifikat von der Zertifizierungsstelle signiert und man erhält ein
gültiges SSL-Zertifikat zurück. Dieses Zertifikat wird in in die Datei "www.mydomain.de.crt" gespeichert.

Entfernen der Passphrase

Wenn das Zertifikat im Webserver eingebunden ist, wird bei jedem System/Webserver restart das Passwort abgefragt.
Das kann lästig sein. Um diesen Umstand zu ändern, muss aus dem "Key-File" die Passphrase entfernt werden:

openssl rsa -in www.mydomain.de.key -out www.mydomain.key.op

Im Webserver wird dann das Key-File ohne Passphrase eingebunden.

Welche Dateien sind nun vorhanden

Key-Files
www.mydomain.de.key            mit Passphrase
www.mydomain.de.key.op         ohne Passphrase
Zertifikats-Request
www.mydomain.de.csr            wird an die Zertifizierungsstelle gesand
Zertifikat
www.mydomain.de.crt            Erhält man von der Zertifizierungsstelle

Einbinden des SSL-Zertifikates im Apache2

<VirtualHost 172.20.20.2:443>
   ServerAdmin .......
   SSLEngine On
   SSLCertificateKeyFile /Path-To-Cert/www.mydomain.de.key.op
   SSLCertificateFile /Path-To-Cert/www.mydomain.de.crt
   DocumentRoot ..........
   ServerName ...........
   ServerAlias ...........
   ScriptAlias /cgi-bin/ ...............
   ErrorLog  ....................
   CustomLog ...............
</VirtualHost>