Apache 2.4 http zu https redirect auf nonstandart port

jan4321

Lt. Commander
Registriert
Juli 2007
Beiträge
1.929
hi,
ich will endlich mal einen Schönheitsfehler meiner owncloud beheben.

Ist:
ich rufe https://owncloud.example.de:1002/ auf, was als virtueller host eingerichtet ist:

Code:
<VirtualHost owncloud.example.de:1002>
        SSLEngine on
                SSLCertificateFile /etc/ssl/certs/apache.crt
                SSLCertificateKeyFile /etc/ssl/private/apache.key

#Permanent http to https redirect
        RewriteEngine On
                RewriteCond %{SERVER_PROTOCOL}  =http
                RewriteRule ^/?(.*) https://owncloud.example.de:1002/$1 [R,L]

# Pfad zu den Webinhalten
        DocumentRoot /var/www/owncloud
</VirtualHost>

alles klappt.

mache ich das ganze mit:
http://owncloud.example.de:1002/ bzw einfach owncloud.example.de:1002
greift die rule nicht und ich bekomme einen 400 Bad Request

Bad Request

Your browser sent a request that this server could not understand.
Reason: You're speaking plain HTTP to an SSL-enabled server port.
Instead use the HTTPS scheme to access this URL, please.

Wo muss ich ansetzten, dass der http einfach in https umwandelt?
 
Zuletzt bearbeitet:
ja natürlich, das wieß ich, aber genau das will ich ja nicht, der sicherheit wegen. Port 1001 ist gerade auf dem apache http und 1002 https, das funktionirt jedes für sich auch super, nur mit meiner rule klappt das nicht.

wenn ich die rewrite Doku richtig interpretiere, dann solte der in den IP header schauen, sehen das da http benutzt wird und das automatisch auf https und port 1002 umleiten.

Das ganze geht auch wunderbar für 1001, nur wenn ich auf den selben Port wie SSL läuft ankomme, funkt mir der Apache dazwischen und weißt die Verbindung ab (was ja auch gut so ist). Nur viele meiner Verwandten kommen nicht damit klar, dass die https und nicht http bzw. garnix davor schreiben müssen.
 
Versuch es mal mit deiner abgewandelten RewriteCond.


RewriteCond %{HTTPS} !=on
# This checks to make sure the connection is not already HTTPS
 
nope, klappt auch nicht wie gesagt für 1001 funktionirt der code auch wunderbar, nur wenn ich auf dem selben port ankomme, dann sieht das für mich so aus, als ob der Apache 2.4 die gesamte rule einfach ignoriert und gleich einen 400 Bad Request raus haut.
 
Verstehe ich das richtig? Du kommst auf dem HTTPS-Port an, sprichst plain HTTP und möchtest, dass der Server das erkennt und in https ändert?

Ich bin kein Fachmann, aber für mich klingt das so, als könne das nicht funktionieren. Du wirst wohl schon erst mit dem http Port sprechen müssen, der dich dann weiter auf https leitet.
Dann kannst du dort (auf port 1001) deine Rewrite-Rule nutzen, in der du abgesehen vom https vorne auch noch die Portnummer am Ende umschreiben musst, um verschlüsselt auf dem richtigen Port zu landen.
 
Jup, genau das ist das problem^^ wie gesagt http port auf https geht ohne Probleme.
Nur vergessen meine lieben user / Verwandeln gerne mal das https://, aber nicht das :1002 hinter der Domain. Das hat natürlich zur folge das der request nicht funktioniert.
Es muss doch möglich sein, dem Apache beizubringen, das er anstatt einen 400er zu bringen einen redrirect auf 1002 mit https machen soll, oder?
 
Ha super danke, genau sowas hab ich gesucht danke :-)

Code:
ErrorDocument 400 https://server.tld:1002/

funktioniert gut. Einziger Nachteil, wenn jemand bestimmte URLs aufrufen will, dann wird die natürlich abgeschnitten, andererseits sollte derjenige natürlich dann auch das https:// nicht falsch machen. Ich kann damit erst mal leben
 
Zuletzt bearbeitet:
Zurück
Oben