|
Suche |
SSL (Secure Socket Layer) dient dazu, auf sichere Art und Weise die zwischen zwei Rechnern ausgetauschten Informationen zu verschlüsseln. Auf Ihrem dedizierten Server kann es sinnvoll sein SSL zu verwenden um sensible Informationen zu schützen. Bevor Sie ein SSL Zertifikat erstellen/aktivieren können müssen Sie zuerst prüfen ob die Option auf Ihrer Maschine auch aktiviert ist. Apache wird standardmässig mit SSL kompiliert, man muss nur angeben dass er es beim Start berücksichtigen soll. Anschliessend können Sie entweder ein offizielles Zertifikat erwerben oder ein eigenes Zertifikat erstellen. Ein von Ihnen selbst erstelltes Zertifikat wird zwar eine Fehlermeldung provozieren, dies verringert jedoch nicht die durch ein Zertifikat gewonnene Sicherheit. Achtung! Die beschriebene Vorgehensweise bezieht sich auf ein RedHat System! Der normale Webserver (HTTP) funktioniert mit Port 80, der Server im SSL Modus mit Port 443. Wir überprüfen also zuerst ob Apache bereits auf diesem Port lauscht: [root@crashtest root]# netstat -tanpu | grep ":443" [root@crashtest root]# Kein Ergebnis. Der Server ist also noch nicht für SSL aktiviert; es genügt dann folgende Option auszukommentieren: [root@crashtest root]# pico /etc/sysconfig/apache Um es auszukommentieren entfernen wir das # vor der gewünschten Option: # Uncomment to active SSL OPTIONS="-DSSL" Wir speichern die Datei mit 'Ctrl+x' und 'Y' gefolgt von 'Enter' und starten dann Apache neu um die Änderungen zu übernehmen. [root@crashtest root]# /etc/init.d/httpd restart Arrêt de httpd : [ OK ] Démarrage de httpd : [ OK ] [root@crashtest root]# Wenn wir nun nochmals den Port 443 überprüfen sehen wir das Apache nun auf dem Port lauscht: [root@crashtest root]# netstat -tanpu | grep ":443" tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 3291/httpd Dies ist äusserst wichtig. Es existiert eine sehr einfach auszunutzende Sicherheitslücke in allen Versionen von OpenSSL < 0.9.6k. Es müssen unbedingt die Sicherheitspatches von OVH angewendet werden bevor die Maschine online geht. Ansonsten wird Ihr Server innerhalb kürzester Zeit gehackt (es werden unzählige Netzwerkscans von Hackern durchgeführt um betroffenen Maschinen zu finden). Um zu sehen welche Version Sie haben: [root@crashtest root]# rpm -qa | grep ssl Sie bekommen eine Ausgabe in folgender Form: openssl-devel-0.9.6k-1 openssl-0.9.6k-1 openssl-perl-0.9.6k-1 Wenn Sie eine ältere Version als die hier angezeigten verwenden (zum Beispiel openssl-0.9.6i) dann ist das nicht OK. Schliessen Sie den Port 443 und führen Sie die Patches aus. Eine Hilfe dazu finden Sie hier: http://hilfe.ovh.de/ReleaseSicherheitsPatch Nun da der SSL Support aktiviert und erreichbar ist benötigen wir ein SSL Zertifikat. Sie können eines kaufen (zum Beispiel hier: http://www.tbs-internet.com/thawte/ oder ein eigenes Zertifikat erstellen wie im Folgenden beschrieben. Per SSH Begeben Sie sich in den Ordner mit den SSL Schlüsseln, wo sich bereits einige andere SSL Schlüssel befinden sollten [root@crashtest root]# cd /usr/local/apache/conf/ssl.key und erstellen Sie Ihren Schlüssel mit folgendem Befehl (Sie müssen natürlich amplirikal.com durch die Domain ersetzen für die Sie ein Zertifikat installieren möchten): [root@crashtest ssl.key]# openssl genrsa 1024 > amplirikal.com.key Sie können die Datei absichern indem Sie ein chmod 400 durchführen: [root@crashtest ssl.key]# chmod -c 400 amplirikal.com.key Nun füllen wir die Zertifikatsabfrage (CSR) durch und beantworten die dabei gestellten Fragen: [root@crashtest ssl.key]# openssl req -new -key amplirikal.com.key > amplirikal.com.csr Using configuration from /usr/share/ssl/openssl.cnf 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]:FR State or Province Name (full name) Some-State:LILLE Locality Name (eg, city) []:LILLE Organization Name (eg, company) [Internet Widgits Pty Ltd]:amplirikal.com und signieren das Zertifikat: [root@crashtest ssl.key]# openssl x509 -req -days 365 -in amplirikal.com.csr -signkey amplirikal.com.key -out amplirikal.com.crt Signature ok subject=/C=FR/ST=LILLE/L=LILLE/O=amplirikal.com/OU=photos/CN=Trinity/Email=raven@united-irc.org Getting Private key [root@crashtest ssl.key]# Nun müssen noch die Dateien in die richtigen Ordner platziert werden: [root@crashtest root]# mv /usr/local/apache/conf/ssl.key/amplirikal.com.crt /usr/local/apache/conf/ssl.crt [root@crashtest root]# mv /usr/local/apache/conf/ssl.key/amplirikal.com.csr /usr/local/apache/conf/ssl.csr und unser Zertifikat ist fertig. Editieren wir nun - immer noch per SSH - unsere Datei httpd.conf: [root@crashtest root]# pico /httpd.conf Suchen Sie den ersten Abschnitt und prüfen Sie ob der SSL Support aktiviert ist: ## ## SSL Support ## ## When we also provide SSL we have to listen to the ## standard HTTP port (see above) and to the HTTPS port ## Listen 80 Listen 443 </IfDefine> Im zweiten Abschnitt bei "NameVirtualHost" fügen wir die IP mit dem Port 443 hinzu. # # Gehen Sie dann zum dritten Abschnitt und ändern Sie den default Virtual Host um Ihr Zertifikat einzufügen. Achtung, im nächsten Abschnitt haben wir die kommentierten zeilen gekürzt damit es nicht zu lang ist. Ändern Sie diese Zeilen in Ihrer Datei NICHT (!) sondern nur die hier angegebenen Zeilen. < < #General setup for the virtual host #SSL Engine Switch: #Enable/Disable SSL for this virtual host. SSLEngine on #Server Certificate: SSLCertificateFile /usr/local/apache/conf/ssl.crt/amplirikal.com.crt #Server Private Key: SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/amplirikal.com.key Wir haben nun angegeben wo das Zertifikat liegt. Nun muss noch der Virtual Host für die Seite hinzugefügt werden. Unser Virtual Host muss sich zwischen <If Define SSL> und </If Define> befinden. < SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile /usr/local/apache/conf/ssl.crt/amplirikal.com.crt SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/amplirikal.com.key <Files ~ ".(cgi|shtml|phtml|php3?)$"> SSLOptions +StdEnvVars </Files> <Directory "/usr/local/apache/cgi-bin"> SSLOptions +StdEnvVars </Directory> </VirtualHost> </IfDefine> Wir verlassen nun httpd.conf mit 'Ctrl+x', bestätigen die Änderungen und starten Apache neu: [root@crashtest www]# /etc/init.d/httpd restart Arrêt de httpd : [ OK ] Démarrage de httpd : [ OK ] [root@crashtest www]# Sie können eine zusätzliche Domain hizufügen indem Sie einfach nach dem ersten </VirtualHost> (und vor </IFDefine>) den Bereich VirtualHost? für die zusätzliche Domain abändern: < SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile /usr/local/apache/conf/ssl.crt/amplirikal.com.crt SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/amplirikal.com.key <Files ~ ".(cgi|shtml|phtml|php3?)$"> SSLOptions +StdEnvVars </Files> <Directory "/usr/local/apache/cgi-bin"> SSLOptions +StdEnvVars </Directory> nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0 "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b" </VirtualHost> Wenn Sie alles richtig gemacht haben können Sie nun Ihre Seiten über HTTPS abrufen. Denken Sie daran dass eine Warnung angezeigt werden wird wenn Sie das Zertifikat selbst erstellt haben und dass für alle Domains EIN EINZIGES Zertifikat verwendet wird. Wie im folgenden Konfigurationsbeispiel werden alle in der Sektion "VirtualHost" hinzugefügten Domains mit dem zu Anfang generierten Zertifikat antworten. |