Wie erstelle und installiere ich ein selbstsigniertes Zertifikat auf Apache?

Der Secure Socket Layer (SSL) dient der Verschlüsselung des Datenstroms zwischen dem Webserver und dem Webclient (dem Browser).

SSL nutzt die sogenannte asymmetrische Kryptografie, die allgemein als Public-Key-Kryptografie (PKI) bezeichnet wird. Bei der Public-Key-Kryptographie werden zwei Schlüssel erstellt, einer öffentlich und einer privat. Alles, was mit einem der Schlüssel verschlüsselt wurde, kann nur mit dem entsprechenden Schlüssel entschlüsselt werden. Wenn also eine Nachricht oder ein Datenstrom mit dem privaten Schlüssel des Servers verschlüsselt wurde, kann sie nur mit dem entsprechenden öffentlichen Schlüssel entschlüsselt werden, wodurch sichergestellt wird, dass die Daten nur vom Server stammen können.

Das von einer vertrauenswürdigen Zertifizierungsstelle (CA) signierte Apache-SSL-Zertifikat stellt sicher, dass der Zertifikatsinhaber eine echte Person oder Organisation ist. Ohne ein vertrauenswürdiges signiertes Zertifikat sind Ihre Daten möglicherweise verschlüsselt, allerdings handelt es sich bei der Partei, mit der Sie kommunizieren, möglicherweise nicht um die Partei, mit der Sie kommunizieren. Ohne das Apache-SSL-Zertifikat wären Imitationsangriffe weitaus häufiger.

Das OpenSSL-Toolkit wird zum Generieren eines privaten RSA-Schlüssels und einer CSR (Certificate Signing Request) verwendet. Es kann auch zur Generierung selbstsignierter Zertifikate verwendet werden, die zu Testzwecken oder für den internen Gebrauch verwendet werden können.

Schritt 1: Generieren Sie einen privaten Schlüssel

Der erste Schritt besteht darin, Ihren privaten RSA-Schlüssel zu erstellen. Bei diesem Schlüssel handelt es sich um einen 1024-Bit-RSA-Schlüssel, der mit Triple-DES verschlüsselt und in einem PEM-Format gespeichert wird, sodass er als ASCII-Text lesbar ist.

openssl genrsa -des3 -out server.key 1024 Generieren eines privaten RSA-Schlüssels mit einem 1024-Bit-Langmodul .........................................................++++++ ........++++++ e ist 65537 (0x10001) Geben Sie die PEM-Passphrase ein: Passwort überprüfen – PEM-Passphrase eingeben:

Schritt 2: Generieren Sie eine CSR (Certificate Signing Request)

Sobald der private Schlüssel generiert ist, kann eine Zertifikatsignierungsanforderung generiert werden. Der CSR wird dann auf zwei Arten verwendet. Im Idealfall wird die CSR an eine Zertifizierungsstelle wie Verisign gesendet, die die Identität des Antragstellers überprüft und ein signiertes Zertifikat ausstellt. Die zweite Möglichkeit besteht darin, die CSR selbst zu signieren, was im nächsten Abschnitt demonstriert wird.

Während der Erstellung des CSR werden Sie zur Eingabe mehrerer Informationen aufgefordert. Dies sind die X.509-Attribute des Zertifikats. Eine der Eingabeaufforderungen lautet „Allgemeiner Name (z. B. IHR Name)“. Es ist wichtig, dass dieses Feld mit dem vollständig qualifizierten Domänennamen des Servers ausgefüllt wird, der durch SSL geschützt werden soll. Wenn die Website geschützt werden soll https://yourdomain.comGeben Sie dann an dieser Eingabeaufforderung „yourdomain.com“ ein. Der Befehl zum Generieren der CSR lautet wie folgt:

openssl req -new -key server.key -out server.csr Ländername (2-Buchstaben-Code) [GB]:IN Name des Staates oder der Provinz (vollständiger Name) [Berkshire]:Karnataka Ortsname (z. B. Stadt) [Newbury]:Bangalore Name der Organisation (z. B. Firma) [My Company Ltd]: Firmenname Name der Organisationseinheit (z. B. Abschnitt) []:Informationstechnologie Allgemeiner Name (z. B. Ihr Name oder der Hostname Ihres Servers) []:yourdomain.com E-Mail-Adresse []:[email protected] Bitte geben Sie die folgenden „zusätzlichen“ Attribute ein wird zusammen mit Ihrer Zertifikatsanfrage verschickt Ein Challenge-Passwort []: Ein optionaler Firmenname []:

Schritt 3: Passphrase vom Schlüssel entfernen

Ein unglücklicher Nebeneffekt des mit einer Passphrase versehenen privaten Schlüssels besteht darin, dass der Webserver bei jedem Start des Webservers nach der Passphrase fragt. Offensichtlich ist dies nicht unbedingt praktisch, da nicht immer jemand da ist, um die Passphrase einzugeben, beispielsweise nach einem Neustart oder einem Absturz. mod_ssl bietet die Möglichkeit, anstelle des integrierten Passphrase-Dialogs ein externes Programm zu verwenden. Dies ist jedoch auch nicht unbedingt die sicherste Option. Es ist möglich, die Triple-DES-Verschlüsselung aus dem Schlüssel zu entfernen, sodass keine Passphrase mehr eingegeben werden muss. Wenn der private Schlüssel nicht mehr verschlüsselt ist, ist es wichtig, dass diese Datei nur für den Root-Benutzer lesbar ist! Sollte Ihr System jemals kompromittiert werden und ein Dritter an Ihren unverschlüsselten privaten Schlüssel gelangen, muss das entsprechende Zertifikat widerrufen werden. Nachdem dies gesagt ist, verwenden Sie den folgenden Befehl, um die Passphrase aus dem Schlüssel zu entfernen:

cp server.key server.key.org openssl rsa -in server.key.org -out server.key

Die neu erstellte server.key-Datei enthält keine Passphrase mehr.

Schritt 4: Erstellen eines selbstsignierten Zertifikats

Zu diesem Zeitpunkt müssen Sie ein selbstsigniertes Zertifikat erstellen, da Sie entweder nicht vorhaben, Ihr Zertifikat von einer Zertifizierungsstelle signieren zu lassen, oder Ihre neue SSL-Implementierung testen möchten, während die Zertifizierungsstelle Ihr Zertifikat signiert. Dieses temporäre Zertifikat erzeugt im Client-Browser einen Fehler, der besagt, dass die signierende Zertifizierungsstelle unbekannt und nicht vertrauenswürdig ist.

Um ein temporäres Zertifikat zu generieren, das 365 Tage lang gültig ist, geben Sie den folgenden Befehl ein:

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt Unterschrift ok subject=/C=CH/ST=Bern/L=Oberdiessbach/O=Akadia AG/OU=Information Technology/CN=public.akadia.com/Email=martin dot zahn bei akadia dot ch Erhalten des privaten Schlüssels

Schritt 5: Installieren des privaten Schlüssels und Zertifikats

Wenn Apache mit mod_ssl installiert wird, werden mehrere Verzeichnisse im Apache-Konfigurationsverzeichnis erstellt. Der Speicherort dieses Verzeichnisses hängt davon ab, wie Apache kompiliert wurde.

cp server.crt /usr/local/apache/conf/ssl.crt cp server.key /usr/local/apache/conf/ssl.key

Schritt 6: SSL-fähige virtuelle Hosts konfigurieren

SSLEngine eingeschaltet SSLCertificateFile /usr/local/apache/conf/ssl.crt/server.crt SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/server.key SetEnvIf User-Agent „.*MSIE.*“ nokeepalive ssl-unclean-shutdown CustomLog logs/ssl_request_log „%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x „%r“ %b“

Starten Sie nun Apache neu und überprüfen Sie.

Nehmen Sie Kontakt mit uns auf.

Abonnieren Sie die neuesten Updates

zusammenhängende Posts

Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

de_DEGerman