SSL-Zertifikate mit Apache + mod_ssl
4 marzo 2008, 12:59 Apache , System- , Tipps & Tricks 4. März 2008, 12.59 Uhr
In diesem Beitrag trage ich einige meiner alten Notizen über den Aufbau und die Installation eines SSL-Zertifikats auf einem Apache-Webserver 1.3. * Mit mod_ssl.
Für weitere detaillierte und vollständige Referenz-Dokumentation, die sich auf der Website http://www.modssl.org/docs / `und` man-Seite von OpenSSL.
Eine HTML-Version des letzteren ist bei http://www.openssl.org/docs/ .
Mit dem `` Toolkit OpenSSL können private RSA-Schlüssel, die später in Verbindung zu einem CSR (Certificate Signing Request) generieren. Mal sehen, wie die privaten RSA-Schlüssel zu generieren und weisen Sie es wie die Apache Web Server. Das folgende Beispiel bezieht sich auf den Vertrieb von FreeBSD 6.0-RELEASE mit Apache 1.3.33, wird jedoch leicht auf jeder anderen Plattform erweitert:
-
Zuerst müssen Sie den privaten RSA-Schlüssel, oder eine 1024-Bit RSA-Schlüssel, die verschlüsselt mit einem Triple-DES und wird in einer Datei gespeichert. PEM-Datei als ASCII-Text.
Folglich - - Um komplexer die Verschlüsselung und sicherer zu machen den Schlüssel, verwenden wir eine Reihe von Dateien als Zufallsgenerator.
Diese Dateien sind alle, die zuvor mit `gzip` komprimiert wurden:
$ openssl genrsa -des3 -rand file1:file2:file3:file4:file5 -out server.key 1024Sie werden nach einem Passwort gefragt. Es ist wichtig, Ihr Passwort an einem sicheren Ort aufbewahren, aus irgendeinem Grund, wenn das Passwort verloren geht, wird der Schlüssel generiert völlig nutzlos! Unterschätzen Sie nicht, diese Empfehlung, weil ein solcher Fehler in den Ausgaben von einer beträchtlichen Summe Geld, um ein neues Zertifikat auf den Verlust eines privaten Schlüssels, die Zertifizierungsstelle, die angesprochen wurden (zum Beispiel erzeugen führen können: VeriSign ), Thawte , etc..) erfordert erneute Zahlung des Betrags bereits für die Freilassung des früheren Zertifikat ausbezahlt. Dies ist ein Betrag, übersteigt - wenn ich schreibe - die EURO 400,00 / Jahr! -
Da Sie ein Passwort für den Schlüssel so erzeugte, bei jedem Neustart des Apache erneut eingeben müssen, oder - besser - Apache durch ein einfaches Bash-Skript, das direkt in httpd.conf aufgerufen werden übergeben:
SSLPassPhraseDialog exec:/usr/local/etc/apache/password.shDas Skript wird einfach so etwas wie die folgenden sein:
#!/bin/sh
echo "password123"#!/bin/sh. Wenn Sie wollen nicht ein beliebiges Passwort (nicht empfohlen!) Verwenden es immer die Möglichkeit der Entfernung des Triple-DES-Verschlüsselung aus dem Schlüssel. Wenn Sie für eine ähnliche Lösung entscheiden, zumindest dafür sorgen, dass der Schlüssel nur von root gelesen ist: wenn die anderen konnten den entschlüsselten privaten Schlüssel zu erhalten, wird das Zertifikat widerrufen wird sofort mit ihr verbundenen, aus offensichtlichen Gründen. Das heißt, hier ist, wie die Verschlüsselung von der Liste zu entfernen:
echo "password123"
$ openssl rsa -in server.key -out server.pem
Jetzt, da wir den privaten Schlüssel haben, können wir erzeugen das CSR (Certificate Signing Request). Die CSR kann auf zwei Arten verwendet werden:
- Mit dem Absenden Ihrer CSR an eine Zertifizierungsstelle, wird diese Überprüfung der Identität des Antragstellers und stellt eine Bescheinigung unterzeichnet
- Mit dem CSR ein Zertifikat selbst produziert generieren
Wir beschäftigen uns hier von der zweiten Hypothese: der Fall, in dem die CSR verwendet, um ein Zertifikat selbst produziert, die von keiner Zertifizierungsstelle anerkannt zu erzeugen. Zertifikate dieser Art geben keine Garantie für die Zuverlässigkeit der Seefahrer, sind aber technisch gleichwertig zu den eigentlichen Zertifikate und erlauben daher ein Höchstmaß an Sicherheit beim Senden / Empfangen von Daten während des Surfens.
Während der Prozess der Erstellung des CSR einige Informationen mit einem einfachen Text-Prompt gefragt. Diese Informationen werden dann die Attribute der X.509-Zertifikat sein. Der wichtigste Input in Bezug auf die "Common Name (zB Ihr Name)", die die entsprechen muss FQDN (Fully Qualified Domain Name) des Servers, der SSL-Verbindung geschützt wird. Der Befehl, um die CSR zu erstellen ist folgende:
$ openssl req -new -key server.key -out server.csr Ohne das wir durch die Erzeugung eines Selbst-Zertifikats mit dem Kommando vor:
$ openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt hat diese Bescheinigung damit produziert wird für 10 Jahre gültig.
Wurde nun auf Änderungen an der Konfiguration des Apache Webservers zu machen. Es sollte zunächst festgestellt, um das Verzeichnis zu verschieben, wenn die Bescheinigung, in unserem Fall:
/usr/local/apache/etc/ssl.crt/
/usr/local/apache/etc/ssl.key/
Einmal zogen die Zertifikate einfach bearbeiten Sie die Datei httpd.conf, so dass bei jedem Neustart Apache, um die Einstellungen für diesen virtuellen Host muss in SSL reagieren zu laden. Hier ist ein ziemlich einfacher ein, die auf dem Standard-Port 443 funktioniert:
# SSL Virtual Hosts
<IfDefine SSL>
<VirtualHost _default_:443>
ServerAdmin webmaster@agliardi.net
DocumentRoot /usr/local/apache/share/htdocs
ServerName www.agliardi.net
ScriptAlias /cgi-bin/ /usr/local/apache/share/htdocs/cgi-bin/
SSLEngine on
SSLCertificateFile /usr/local/apache/etc/ssl.crt/server.crt
SSLCertificateKeyFile /usr/local/apache/etc/ssl.key/server.pem
SSLPassPhraseDialog exec:/usr/local/etc/apache/password.sh
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
CustomLog /usr/local/apache/var/log/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
</IfDefine># SSL Virtual Hosts Diese Anleitung wird die Erstellung eines SSL Virtual Host genannt www.agliardi.net und zugänglich auf Port 443, die Standard-IP-Adresse des Webservers führen kann.
Sie können alle SSL Virtual Host, die Sie benötigen, sondern muss darauf geachtet werden, um einen anderen Port für jeden von ihnen angeben werden!
Es sei denn Sie verfügen über eine voll gewidmet IP-Adresse für jede Domain, die recht selten passiert.
<IfDefine SSL>
<VirtualHost _default_:443>
ServerAdmin webmaster@agliardi.net
DocumentRoot /usr/local/apache/share/htdocs
ServerName www.agliardi.net
ScriptAlias /cgi-bin/ /usr/local/apache/share/htdocs/cgi-bin/
SSLEngine on
SSLCertificateFile /usr/local/apache/etc/ssl.crt/server.crt
SSLCertificateKeyFile /usr/local/apache/etc/ssl.key/server.pem
SSLPassPhraseDialog exec:/usr/local/etc/apache/password.sh
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
CustomLog /usr/local/apache/var/log/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
</IfDefine>
Wurde nun auf Apache neu starten und mit Ihrem Browser auf https://www.agliardi.net !














