• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Apache2 - virtuelle Hosts

Hi,

ich möchte auf meinem Rechner ein Webprojekt laufen lassen, welches auch unter https://10.0.0.1/meinWebproject aufrufbar sein soll - also mit SSL-Verschlüsselung. In diesem Zusammenhang habe ich viel mit VirtualHost einrichten etc. gelesen. Mir ist nur noch nicht ganz klar, was ich tun muss, um das Webprojekt über https aufzurufen!!! Aufruf mit http://10.0.0.1/meinWebproject klappt tadellos - ist eben leider unverschlüsselt auf Port 80?!
Um das unverschlüsselt laufen zu lassen, habe ich am Apache2 gar keine weiteren Einstellungen vorgenommen.

Um das ganze verschlüsselt laufen zu lassen (Port 443) - was muss ich da tun???
Muß ich mir eine zusätzliche IP einrichten (mit Eintrag dieser im DNS) - oder wie soll ich den VirtualHost sonst verstehen?
Wie sollte grob, unter /etc/apache2/vhosts.d, die entsprechende conf-Datei für my_ssl_virtualHost.conf aussehen?


Meine Systemspezifikation:
IP: 10.0.0.1
Webverzeichnis: /srv/www/htdocs (in Unterordener <meinWebproject> befindet sich mein Webprojekt)

Danke.


PS: Es wäre schön, wenn ich später auch noch andere Webprojekte laufen lassen könnte - über einen virtualHost! Daher muss ich wohl einen namesbasierten virtualHost einrichten?! Hierauf bezieht sich eigentlich auch dieser Post.
 

nbkr

Guru
Die VirtualHost Definition für https ist die gleiche wie für http. Der Unterschied liegt im Port (443, statt 80) und den Befehlen SSLEngine, SSLCertificateFile und SSLCertificateKeyFile. Die müssen mit rein. Dazu brauchst Du natürlich noch ein Zertifikat. Ein Howto habe ich im Moment nicht zur Hand, aber Google sollte allerhand ausspucken.
 
OP
M

magic_halli

Hacker
Die VirtualHost Definition für https ist die gleiche wie für http. Der Unterschied liegt im Port (443, statt 80) und den Befehlen SSLEngine, SSLCertificateFile und SSLCertificateKeyFile.

Also erstelle ich mir unter /etc/apache2/vhosts.d aus der Vorlagendatei vhost-ssl.template eine neue Datei, bspw. my_ssl_virtualHost.conf? Dort stehen erstmal defaul-Vorgaben mit SSLEngine, SSLCertificateFile und SSLCertificateKeyFile drin. Das Zertifikat usw. muss ich natürlich noch erstellen (weiß wie´s geht).

Ich habe in dem vhost-ssl.template den Satz gefunden:
#NameVirtualHost statements should be added to /etc/apache2/listen.conf.
Diese sieht bei mir derzeit so aus:
Code:
Listen 80


<IfDefine SSL>
    <IfDefine !NOSSL>
	<IfModule mod_ssl.c>

	    Listen 443

	</IfModule>
    </IfDefine>
</IfDefine>
Muss ich da jetzt nochwas hinzufügen, oder reicht das erstmal, um später https://... über Port 443 aurufen zu können?

Ansonsten muss ich jetzt meine /etc/apache2/vhosts.d/my_ssl_virtualHost.conf anpassen???
 

nbkr

Guru
Wenn der Virtualhost für Port 80 schon geht hast Du schon eine NameVirtualHost Direktive. Wenn die mit :80 endet musst Du noch ein zweite einbauen die eben auf :443 endet.
 
OP
M

magic_halli

Hacker
Wenn der Virtualhost für Port 80 schon geht hast Du schon eine NameVirtualHost Direktive. Wenn die mit :80 endet musst Du noch ein zweite einbauen die eben auf :443 endet.
Ja, aber wo soll ich die einbauen bzw. in welcher Datei steht denn überhaupt diese NameVirtualHost Direktive für Port 80???
In der /etc/apache2/listen.conf steht diese zwar drin, ist aber auskommentiert!!! Hier nochmal der komplette Code dieser Datei:
[/code]
#Listen 443

Listen 80


<IfDefine SSL>
<IfDefine !NOSSL>
<IfModule mod_ssl.c>

Listen 443

</IfModule>
</IfDefine>
</IfDefine>


# Use name-based virtual hosting
#
# - on a specified address / port:
#
#NameVirtualHost 12.34.56.78:80
#
# - name-based virtual hosting:
#
#NameVirtualHost *:80
Code:
 

nbkr

Guru
magic_halli schrieb:
Ja, aber wo soll ich die einbauen bzw. in welcher Datei steht denn überhaupt diese NameVirtualHost Direktive für Port 80???

Code:
cd /etc/apache2/
grep -ilr NameVirtualHost ./*

Das liefert alle Dateien in denen NameVirtualHost vorkommt.
 
OP
M

magic_halli

Hacker
cd /etc/apache2/
grep -ilr NameVirtualHost ./*
'NameVirtualHost' kommt nur in der listen.conf und in der my_ssl_virtualHost.conf vor - allerdings sind alle betreffenden Einträge AUSKOMMENTIERT!

Zum Verständnis:
Die physische IP meiner Netzwerkkarte an eth1 ist die 10.0.0.1!
Habe eine zusätzliche IP eingerichtet für diese Karte an eth1:virtual 10.0.0.111. Das ist dann die Adresse vom virtuellen Host???

mal anders gefragt:
Wie gehe ich ganz simpel vor, statt wie bisher http://10.0.0.1/meinWebproject jetzt über https://10.0.0.1/meinWebproject aufzurufen???
Vielleicht haben wir auch nur aneinander vorbei geredet... :roll:
Wenn ich jetzt schon versuche https://10.0.0.1/meinWebproject aufzurufen, bekomme ich im Apache2/error_log den Eintrag:
Code:
[error] [client 10.0.0.111] Invalid method in request \x80g\x01\x03
 
OP
M

magic_halli

Hacker
So, ich konnte das Problem jetzt endlich lösen: Es lag an nicht korrekt erstelltem Zertifikat für den Apache2!!!
Das wiederum lag an einer falschen Anleitung hierfür. Da ich SuSe10.1 habe, scheint die Zertifizierung nicht identisch mit anderen/älteren Distributionen zu sein?!

Hier jedenfalls mal schnell mein Vorgehen bzgl. Zertifikaterstellung:
1. in einen Ordner wechseln, wo das Zertifikat + Key usw. erstellt werden sollen
2. # CA.pl -newca (erstellt RootCA)
3. # openssl genrsa -out server.key 1024
4. # openssl req -new -key server.key -out newreq.pem
(!!! hier muss bei common-name der Rechnername stehen, wie er später auch im Browser aufgerufen wird!!!)
5. # CA.pl -sign
6. # cp newcert.pem server.crt
7. # cp server.crt ssl.crt
8. # cp server.key ssl.key

In meiner Datei my_ssl_virtualHost.conf habe ich dann ssl.crt und ssl.key an den entsprechenden Stellen eingesetzt.
Danach einen Apache2-Restart und siehe da, https funktioniert nun endlich - ich wurde gleich auf das Zertifikat aufmerksam gemacht usw.

GEIL!!! :D
 
Oben