Przekierowanie z http na https

Konfiguracja serwerów, usług, itp.
michalko
Posty: 15
Rejestracja: 09 grudnia 2010, 13:07

Przekierowanie z http na https

Post autor: michalko »

Mam na serwerze zainstalowany panel ISPConfig3. Domyślnie działa na

Kod: Zaznacz cały

http://example.com:8080
W pliku .vhost włączyłem SSL, dzięki czemu mam szyfrowane połączenie na

Kod: Zaznacz cały

https://example.com:8080
Teraz bym chciał, żeby jak ktoś wejdzie na

Kod: Zaznacz cały

http://example.com:8080
to zostanie przekierowany na:

Kod: Zaznacz cały

https://example.com:8080
W tej chwili na http:// mam jedynie nieładny:

Kod: Zaznacz cały

Bad Request
Można takie przekierowanie ustawić w pliku .vhost? Www działa na Apache2.
srebrny
Posty: 7
Rejestracja: 30 marca 2011, 18:20

Post autor: srebrny »

Nie wiem jak z vhostami ale na pewno takie coś da się ustawić poprzez .htaccess

Podam link
http://www.webconfs.com/how-to-redirect-a-webpage.php
michalko
Posty: 15
Rejestracja: 09 grudnia 2010, 13:07

Post autor: michalko »

Gdyby chodziło o przekierowanie:

Kod: Zaznacz cały

http://example.com
na:

Kod: Zaznacz cały

https://example.com
to nie byłoby problemu, a Twój link byłby na miejscu. Problem w tym, że na porcie 8080 działa tylko połączenie szyfrowane. Wejście na

Kod: Zaznacz cały

http://example.com:8080
powoduje wyświetlenie błędu:

Kod: Zaznacz cały

[B]Bad Request[/B]

 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.

Hint: [B][URL]https://example.com:8080[/URL][/B][url=https://deslay.pl:8080/][B]/[/B][/URL]
Dzięki temu nie działa też rewrite_mod dla http.
Awatar użytkownika
LordRuthwen
Moderator
Posty: 2305
Rejestracja: 18 września 2009, 21:45
Lokalizacja: klikash?

Post autor: LordRuthwen »

A nie prościej ci będzie zrobić w miejscu docelowym [url]http://.[/url].. plik php z przekierowaniem na [url]https://.[/url]..
Awatar użytkownika
cmike
Posty: 22
Rejestracja: 26 lutego 2007, 15:23
Lokalizacja: Kraków

Post autor: cmike »

Plik .htaccess lub konfiguracja VHOSTa:

Kod: Zaznacz cały

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
michalko
Posty: 15
Rejestracja: 09 grudnia 2010, 13:07

Post autor: michalko »

Działa, ale tylko na https, przez co wpada w pętle nieskończoną.

LordRuthwen, niestety nie, bo jak już wspomniałem na porcie 8080 nie działa http.
Pacek
Beginner
Posty: 315
Rejestracja: 18 sierpnia 2009, 15:17
Lokalizacja: Gdynia

Post autor: Pacek »

Można to zrobić na dwa sposoby:
1. Poprzez ustawienie VitrtualHosta na porcie 443, w którego konfiguracji trzeba zdefiniowac klucze do szyfrowania (obsługę SSL)
2. Poprzez wykorzystanie np. stunel, który potrafi zaszyfrować połączenie w oparciu o klucze podane w konfiguracji.
michalko
Posty: 15
Rejestracja: 09 grudnia 2010, 13:07

Post autor: michalko »

No tak pierwszy sposób jest najprostszy, ale to nie rozwiązuje problemu działania ispconfig na porcie 8080.

Nie znalazłem do tej pory rozwiązania. Zastosowałem standardowe rozwiązanie, czyli 2 vhosty, jeden działa na porcie 80, drugi na 443, w tym pierwszym znajdują się reguły mod_rewrite aby po wejściu na http przekierował na https i tyle.

Czyli teraz mam tak:

Kod: Zaznacz cały

http://subdomena.example.com
przekierowuje na

Kod: Zaznacz cały

https://subdomena.example.com
no i tutaj już ukazuje się ISPConfig. Adres jest przyjaźniejszy, ale nadal mnie zastanawia czy da się rozwiązać problem dotyczący tematu.
Awatar użytkownika
hello_world
Posty: 66
Rejestracja: 15 maja 2009, 21:03

Post autor: hello_world »

Wydaje mi się że popełniasz błąd z portem.
Nie możesz trzymać połączenia nieszyfrowanego i szyfrowanego na jednym porcie.
Przede wszystkim musisz zdefiniować na jakich portach ma nasłuchiwać apache.

Kod: Zaznacz cały

Listen 80
Listen 443
Potem w sekcji

Kod: Zaznacz cały

<VirtualHost _default_:443>
definiujesz gdzie masz ceryfikat, klucz
Włączasz

Kod: Zaznacz cały

SSLEngine on
i to wszystko
Natomiast kiedy chcesz aby wymusić na ludziach używanie tylko https dopisujesz:

Kod: Zaznacz cały

<VirtualHost TWOJ_IP:80>
  ServerName TWOJA_DOMENA
  Redirect / [url]https://TWOJA_DOMENA/[/url]
</VirtuaHost>
Olivia
Beginner
Posty: 106
Rejestracja: 11 lutego 2007, 20:19
Lokalizacja: Kraków

Post autor: Olivia »

Podepnę się do problemu.
Nie możesz trzymać połączenia nieszyfrowanego i szyfrowanego na jednym porcie.
Na nginx mnie się udało. Z:

Kod: Zaznacz cały

http::IP:1234
automatycznie przekierowuje na

Kod: Zaznacz cały

https://IP:1234
Na pewno się da w apache też tak zrobić.
ODPOWIEDZ