HTTPS für Unterseiten einrichten

Hallo HaBo,

ich bin gerade dabei bei meinen Server HTTPS einzurichten, will bisschen mit weiterbilden. Dies soll aber nur aktiv werden wenn eine unterseite betreten wird z.B.: http://www.Testseite123.de/Account.php und für die weiter führenden Unterseiten. Die Hauptseite und die anderen Unterseiten sollen davon nicht betroffen sein.

Ich habe bei meinen Apache2 bereits folgendes HowTo angefangen durchzuführen: http://mrfoo.de/archiv/347-Howto-Apache2-SSL-Zertifikat-erstellen-und-aktivieren.html

Hierbei bin ich mir nicht ganz sicher ob ich da die bestimmte Unterseite mitgeben kann /etc/apache2/https.conf:


Code:
[FONT=Courier New][FONT=Courier New][SIZE=2] <VirtualHost [B]http://www.Testseite123.de/Account.php[/B]:443>[/SIZE][/FONT][/FONT]
[LEFT][FONT=Courier New][FONT=Courier New][SIZE=2] ServerName [/SIZE][/FONT][B]http://www.Testseite123.de/Account.php[/B]
[FONT=Courier New][SIZE=2] SSLEngine on
 SSLCertificateKeyFile /etc/apache2/myssl/server.cert.key[/SIZE][/FONT][/FONT]
[FONT=Courier New][SIZE=2] SSLCertificateFile /etc/apache2/myss/server.cert.crt
 </VirtualHost>[/SIZE][/FONT]
[/LEFT]
/etc/apache2/ports.conf:

Muss der Eintrag Listen 443 zusätzlich eingetragen werden? Als ich
das gemacht habe, konnte ich meine Seite gar nicht mehr aufrufen.

Vielleicht kann mir ja einer ein Ratschlag geben, was ich falsch gemacht habe und wie ich das aktivieren kann, dass nur die eine Unterseite mit https:// aufgerufen wird.

Vielen Dank schonmal

Terence
 
Hallo,

also erstmal, wenn du SSL nur für eine Unterseite benutzen willst, musst du deinen Webserver so konfigurieren, dass er auf den Ports 80 und 443 lauscht.
Zweitens, der Servername bezieht sich auf den Hostnamen und nicht auf eine voll qualifizierte URL. Du kannst keinen vollen Pfad angeben, sondern der Webserver filtert die virtuellen Server nach dem Hostnamen in der URL.
Drittens, um zu verhindern, dass nur genau die Unterseite Account.php über SSL aufgeliefert wird, kannst du einfach diese Seite im HTTP-VirtualHost sperren und im HTTPS-VirtualHost alles andere. Natürlich musst du den Benutzer auch auf die SSL-Seite bringen, also im Link auf die Account.php als URL https://meineseite.url/Account.php angeben.

Code:
Listen 80
Listen 443

<VirtualHost *:80>
ServerName www.Testseite123.de
DocumentRoot /pfad/zum/docroot

<Location /Account.php>
Order Allow,Deny
Deny From All
</Location>

</VirtualHost> 

<VirtualHost *:443>
ServerName www.Testseite123.de
DocumentRoot /pfad/zum/docroot
SSLEngine on
SSLCertificateKeyFile /etc/apache2/myssl/server.cert.key
SSLCertificateFile /etc/apache2/myss/server.cert.crt

<Location />
Order Deny, Allow
Deny From All
</Location>

<Location /Account.php>
Allow From All
</Location>

</VirtualHost>

Das mit den Deny-Allow-Direktiven ist immer ein bisschen kompliziert. Kann sein dass du da noch dran schrauben musst, das hängt immer von der Standardkonfiguration in deinen anderen Apache-Configdateien ab.

mfg, metax.
 
Hallo metax,

habe mal etwas weiter ausprobiert und auch deine Hilfe in Anspruch genommen.

Zwei Sachen sind mir aufgefallen...:

Frage muss ich folgenden Parameter angeben:
"DocumentRoot /pfad/zum/docroot" wüsste nicht wohin ich diesen
führen müsste. Hatte ich auch bei mir jetzt weggelassen.
Alles weitere habe ich übernommen und dann kam folgendes und die
Seite konnte gar nicht mehr aufgerufen werden:

Code:
:~# /etc/init.d/apache2 force-reload
Forcing reload of web server (apache2)...grep: warning: /etc/apache2/conf/conf: recursive directory loop

[Sat Nov 20 16:24:22 2010] [error] VirtualHost *:443 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results
[Sat Nov 20 16:24:22 2010] [error] VirtualHost *:80 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results
httpd (no pid file) not running
[Sat Nov 20 16:24:22 2010] [error] VirtualHost *:443 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results
[Sat Nov 20 16:24:22 2010] [error] VirtualHost *:80 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results
(98)Address already in use: make_sock: could not bind to address [::]:443
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:443
no listening sockets available, shutting down
Unable to open logs
failed!

Kann es sein, dass man nicht 2 virtuelle Maschinen starten?

In den HowTo, was ich gelesen habe Stand "<VirtualHost *:80>" Das ich die * gegen den Servernamen ändern müsste, hats einmal mit * probiert und einmal mit meiner Testseite "www.meineseite.url:80"

Danke schon mal... :wink:
 
Hallo,
du könnest mal deine restlichen Apache-Configdateien irgendwo hochladen (natürlich kannst du wichige Daten wie Servername durch xxx oder so ersetzen).
Ich kann hier nur raten, was du gemacht hast. Außerdem wäre interessant zu wissen, welche Apache-Version du nutzt und auf welcher Distribution. Debian hat ganz andere Defaultkonfigurationen als Gentoo oder Slackware z.B. ...

Die DocumentRoot Direktive gibt den Pfad an, wo deine Webseitendateien liegen. Also normalerweise /var/lib/apache oder /var/www.

Der Fehler "[Sat Nov 20 16:24:22 2010] [error] VirtualHost *:443 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results" sieht so aus, als hättest du an anderer Stelle irgendwo schon einen VirtualHost mit Namen angegeben. Deswegen würde ich gerne die ganzen Config-Dateien sehen.

Der Fehler "(98)Address already in use: make_sock: could not bind to address [::]:443" sieht dagegen so aus, als hättest du ein doppeltes Listen 443 irgendwo, vielleicht auch durch eine andere Direktive impliziert.

Ich hoffe mal stark, dass läuft auf deinem Homeserver und nicht auf irgendeinem echten Server ...
 
Zurück
Oben