So aktivieren Sie mehrere HTTPS-Sites für eine IP auf Debian Etch mit TLS Erweiterungen
Diese Anleitung ist Debian-spezifisch, könnte aber auf andere Distributionen portiert werden, da das Konzept dasselbe ist. Um TLS-Erweiterungen zu verwenden, müssen wir Apache2 patchen und neu kompilieren und OpenSSL mit der Direktive enable-tlsext neu kompilieren. Da TLS-Erweiterungen relativ neu sind , funktionieren einige Internetbrowser nicht, sodass der Apache2-Server nur die Standardseite liefert, wie es HTTP 1.0 auf einem HTTP 1.1-Server tut.
Diese Anleitung geht davon aus, dass Sie perfect_setup_debian_etch bis zum Ende befolgt haben.
1. pbuilder vorbereiten
pbuilder installieren.
apt-get update
apt-get install pbuilder fakeroot sudo devscripts apt-utils
Bearbeiten Sie als Nächstes /etc/pbuilder/pbuilderrc in Zeile 11, um eine Ihnen am nächsten gelegene Site wiederzugeben. Dies ist die Site, die apt verwendet, um Abhängigkeiten aufzulösen.
MIRRORSITE=http://http.us.debian.org/debian
Gehen Sie in derselben Datei zu Zeile 20 und setzen Sie DISTRIBUTION=etch
Erstellen Sie schließlich Ihr pbuilder-Image.
pbuilder create --distribution etch
2. Apache2 patchen und neu kompilieren.
Zuerst müssen wir ein Verzeichnis erstellen, um die Quellen zu speichern und sie herunterzuladen.
mkdir /usr/src/apache2
cd /usr/src/apache2
apt-get source apache2
Kopieren und speichern Sie diesen Patch unter /usr/src/apache2/apache2-2.2.3/httpd-2.2.3-sni.patch
cat> /usr/src/apache2/apache2-2.2.3/httpd-2.2.3-sni.patch
httpd-2.2.3-sni.patch - Unterstützung der Servernamensanzeige für Apache 2.2 (siehe RFC 4366, "Transport Layer Security (TLS) Extensions" )Basierend auf einem Patch des EdelKey-Projekts (http://www.edelweb.fr/EdelKey/files/apache-2.2.0+0.9.9+servername.patch) Benötigt openssl-SNAP-20060330 / openssl-0.9.8 -stable-SNAP-20070813 oder höher, um ordnungsgemäß zu funktionieren (ftp://ftp.openssl.org/snapshot/). Der Zweig 0.9.8 muss zur Kompilierzeit explizit für die Unterstützung von TLS-Erweiterungen konfiguriert werden ("./config enable-tlsext").Index:httpd-2.2.x/modules/ssl/ssl_engine_init.c================================================================--- httpd-2.2.x/modules/ssl/ssl_engine_init.c (Revision 423224)+++ httpd-2.2.x/modules/ssl/ssl_engine_init.c (Arbeitskopie)@@ -156,6 +156,87 @@ Rückgabe OK; } +#ifndef OPENSSL_NO_TLSEXT+static int set_ssl_vhost(void *servername, conn_rec *c, server_rec *s) +{+ SSLSrvConfigRec *sc;+ SSL *ssl;+ BOOL gefunden =FALSE;+ apr_array_header_t *namen;+ int i;+ + /* ServerName prüfen */+ if (!strcasecmp(servername, s->server_hostname))+ found =TRUE;++ /* falls noch nicht gefunden, ServerAlias-Einträge prüfen */+ if (!found) {+ names =s->names;+ if (names) {+ char **name =(char **) names->elts;+ for (i =0; i |
Verwenden Sie Strg+D zum Beenden
cd apache2-2.2.3/
Ändern Sie die Version.
cd debian/
Und ändern Sie die Zeilen 1-5 so, dass es so aussieht:
Kompilieren Sie das Quellpaket neu.
cd ../..
Kompilieren Sie Apache2 mit pbuilder.
Bearbeiten Sie /etc/apt/sources.list mit Ihrem bevorzugten Editor und fügen Sie eine neue Zeile mit sid für die Verteilung hinzu
apt-get update
Bearbeiten Sie die Datei /usr/src/openssl/openssl-0.9.8g/debian/rules und fügen Sie enable-tlsext in Zeile 22 hinzu, sodass es so aussieht:
cd openssl-0.9.8g/debian/
Ändern Sie die Version in den Zeilen 1-5 so, dass sie so aussieht:
Kompilieren Sie das Quellpaket neu.
cd ../..
Kompilieren Sie OpenSSL mit pbuilder.
Installieren der neu erstellten Pakete.
cd /var/cache/pbuilder/result
Führen Sie diesen Befehl aus, um alle Abhängigkeiten zu beheben.
Bearbeiten Sie /home/admispconfig/ispconfig/lib/classes/ispconfig_isp_web.lib.php und suchen Sie nach Folgendem:
Kommentieren Sie es aus, damit es so aussieht:
Suchen Sie erneut in derselben Datei und kommentieren Sie diese aus.
Erstellen Sie eine sichere Standard-Site, die Benutzern angezeigt wird, wenn sie einen nicht RFC 4366-kompatiblen Browser verwenden.
mkdir /var/www/sharedip/ssl
Achten Sie darauf, Ihr eigenes Passwort einzugeben.
Bearbeiten Sie /etc/apache2/apache2.conf und platzieren Sie diese oben. Fügen Sie /etc/apache2/vhosts/Vhosts_ispconfig.conf ein
Testen Sie die Erstellung mehrerer Websites mit aktiviertem SSL.
http://edseek.com/~jasonb/articles/pbuilder_backports/index.html
patch –p1
dch –iApache2 (2.2.3-4a+etch) stabil; urgency=low
* Aktivierte TLS-Erweiterungen
-- John Doe
dpkg-source –b apache2-2.2.3/ apache2_2.2.3.orig.tar.gzpbuilder build apache2_2.2.3-4a+etch.dsc
3. Kompilieren von OpenSSL-0.9.8g
deb-src http://ftp.debian.org/debian/ sid main
mkdir /usr/src/openssl
cd /usr/src/openssl/
apt-get source opensslCONFARGS =--prefix=/usr --openssldir=/usr/lib/ssl no-idea no-mdc2 no-rc5 zlib enable-tlsext
dch -iopenssl (0.9.8g-1) instabil; urgency=low
* Aktivierte TLS-Erweiterungen
-- John Doe
dpkg-source –b openssl-0.9.8g/ openssl_0.9.8g.orig.tar.gzpbuilder build openssl_0.9.8g-1.dsc
dpkg –i apache2_2.2.3-4a+etch_all.deb
dpkg –i apache2.2-common_2.2.3-4a+etch_i386.deb
dpkg –i apache2-mpm-prefork_2.2.3-4a+etch_i386.deb
dpkg –i libssl0.9.8_0.9.8g-1_i386.deb
dpkg –i openssl_0.9.8g-1_i386.debapt-get install –f
4. Konfigurieren Sie ISPConfig, um mehrere sichere Websites auf einer IP-Adresse zuzulassen
/////////////////////////////// /////////////////////// // Prüfen Sie, ob bereits ein SSL-Zertifikat auf der IP existiert /////////////// ////////////////////////////////////// $ssl_count =$go_api->db->queryOneRecord ("SELECT count(doc_id) as ssl_co if($ssl_count["ssl_count"]> 1) { // Es existiert bereits ein SSL Web mit dieser IP $status ="NOTIFY"; $errorMessage .=$go_api->lng( "error_web_ssl_exist"); $go_api->db->query("UPDATE isp_isp_web set web_ssl =0 where doc_id =}
/////////////////////////////// /////////////////////// // Prüfen Sie, ob bereits ein SSL-Zertifikat auf der IP existiert /////////////// ////////////////////////////////////// // $ssl_count =$go_api->db->queryOneRecord("SELECT count(doc_id) as ssl_co // if($ssl_count["ssl_count"]> 1) { // // Es existiert bereits ein SSL Web mit dieser IP // $status ="NOTIFY"; // $errorMessage .=$go_api->lng("error_web_ssl_exist"); // $go_api->db->query("UPDATE isp_isp_web set web_ssl =0 where doc_id =// }
cd /var/www/sharedip/ssl
openssl genrsa -des3 -passout pass:yourpassword -out 192.168.1.2.key2 1024
openssl req - new -passin pass:yourpassword -passout pass:yourpassword -key 192.168.1.2.key2 -out 192.168.1.2.csr -days 365
openssl req -x509 -passin pass:yourpassword -passout pass:yourpassword -key 192.168. 1.2.key2 -in 192.168.1.2.csr -out 192.168.1.2.crt -days 365
openssl rsa -passin pass:yourpassword -in 192.168.1.2.key2 -out 192.168.1.2.key
chmod 400 192.168.1.2.Schlüssel
Außerdem würde ich ein Sternchen "*" für den allgemeinen Namen verwenden.NameVirtualHost 192.168.1.2:443
Sie müssen einen RFC 4366-kompatiblen Browser haben, um die Websites korrekt anzeigen zu können.
Um Ihren Browser zu testen, gehen Sie zu https://dave.sni.velox.ch /und überprüfen Sie, ob Ihr Browser funktioniert.Links:
https://dave.sni.velox.ch/
http://www.edelweb.fr/EdelKey/