Dlaczego to przekierowanie HTTP na HTTPS nie działa?

0

Czytałem wszystkie dyskusje na ten temat i postanowiłem użyć metody Przekierowanie w pliku httpd.conf bez powodzenia ... Więc wróciłem tutaj do tego dobrze znanego tłumu.

Mamy usługę nazwijmy ją „host1” (na podstawie https), która działa na Centos 6.x Postanowiliśmy dodać tam również naszą stronę internetową, aby wykorzystać zakupione certyfikaty wieloznaczne SSL, które działają dobrze dla dwóch dostępów SSL podczas łączenia https.

Niestety nasza strona internetowa jest niedostępna i upłynął limit czasu, gdy użytkownik pisze naszą domenę.com, www.ourdomain.com lub używa http dla ourdomain.com lub www.ourdomain.com. Wszystko działa dobrze z https dla ourdomain.com, www.ourdomain.com i host1.ourdomain.com.

Poniżej znajdziesz httpd.conf i ssl.conf obcięte do obszarów Virtual Hosts zarówno w ukryciu, jak i ukrywania naszych konkretnych szczegółów.

W tej konfiguracji otrzymuję następujący błąd: httpd:

Ten już się nie dzieje, dzięki za podpowiedzi Starting httpd: (98)Address already in use: make_sock: could not bind to address [::]:80

------------ Start httpd.conf ------------------
# >>httpd configuration truncated down to Virtual Hosts

#
# Use name-based virtual hosting.
#
NameVirtualHost *:80

 <VirtualHost *:80>
   ServerName www.ourdomain.com
   Redirect permanent / https://www.ourdomain.com/
 </VirtualHost>

------------ End httpd.conf ------------------

------------ Start ssl.conf to manage 443 and ssl certificates------------------

# >>SSL Configuration Truncated up to Listen 443 and Virtual Hosts

Listen 443

    #Listen for virtual host requests on all IP addresses
NameVirtualHost *:443

# >>SSL Config ...

##
## SSL Virtual Host Context
##

<VirtualHost *:443>

DocumentRoot /var/www/html/dir1
ServerName host1.ourdomain.com
ServerAlias host1.ourdomain.com

ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn

SSLEngine on

# >>SSL Certificates Config ... Truncated
</VirtualHost>


<VirtualHost *:443>

DocumentRoot /var/www/html/dir2
ServerName ourdomain.com
ServerAlias ourdomain.com www.ourdomain.com

ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn

SSLEngine on

# >>SSL Certificates Config ... Truncated

</VirtualHost>

------------ End ssl.conf ------------------

Gdzie jest problem? Nie chciałbym się zgadzać z .htaccess, ponieważ chcę uniknąć wpływu AllowOverride All na naszą usługę host1.

Dzięki.

Oly

----- Dodano sekcję dotyczącą drugiego żądania netstat przez ngn

# netstat -ant | grep 80
tcp        0      0 :::80                       :::*                        LISTEN

----- Dodano sekcję na prośbę lsof Hbruijna - jakiś pomysł?

# lsof -iTCP:80
COMMAND   PID   USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
httpd   24331   root    5u  IPv6 5381394      0t0  TCP *:http (LISTEN)
httpd   24334 apache    5u  IPv6 5381394      0t0  TCP *:http (LISTEN)
httpd   24335 apache    5u  IPv6 5381394      0t0  TCP *:http (LISTEN)
httpd   24336 apache    5u  IPv6 5381394      0t0  TCP *:http (LISTEN)
httpd   24337 apache    5u  IPv6 5381394      0t0  TCP *:http (LISTEN)
httpd   24338 apache    5u  IPv6 5381394      0t0  TCP *:http (LISTEN)
httpd   24339 apache    5u  IPv6 5381394      0t0  TCP *:http (LISTEN)
httpd   24340 apache    5u  IPv6 5381394      0t0  TCP *:http (LISTEN)
httpd   24341 apache    5u  IPv6 5381394      0t0  TCP *:http (LISTEN)
httpd   25323 apache    5u  IPv6 5381394      0t0  TCP *:http (LISTEN)
httpd   25325 apache    5u  IPv6 5381394      0t0  TCP *:http (LISTEN)
httpd   25326 apache    5u  IPv6 5381394      0t0  TCP *:http (LISTEN)

Nowy dodatek do tego problemu

Oto wyniki httpd -S, wszystkie wydają się OK z punktu widzenia httpd. Ale łączenie się z „http: //ourdomain.com” lub „http: //www.ourdomain.com” zatrzymuje się we wszystkich przeglądarkach ... Przepisywanie z https w ogóle nie działa.

wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
     default server ourdomain.com (/etc/httpd/conf/httpd.conf:1032)
     port 80 namevhost ourdomain.com (/etc/httpd/conf/httpd.conf:1032)
             alias ourdomain.com
             wild alias *.ourdomain.com
*:443                  is a NameVirtualHost
     default server host1.ourdomain.com (/etc/httpd/conf.d/ssl.conf:40)
     port 443 namevhost host1.ourdomain.com (/etc/httpd/conf.d/ssl.conf:40)
             alias host1.ourdomain.com
     port 443 namevhost ourdomain.com (/etc/httpd/conf.d/ssl.conf:95)
             alias ourdomain.com
             alias www.ourdomain.com
Syntax OK

httpd.conf dla portu 80

<VirtualHost *:80>
    ServerName ourdomain.com
    ServerAlias ourdomain.com *.ourdomain.com
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 
</VirtualHost>
oly
źródło
Wygląda na to, że coś jest już związane z portem 80. Czy możesz to zrobić netstat -n | grep 80i sprawdzić, który proces używa portu?
ngn
Komunikat o błędzie Address already in use: make_sock: could not bind to address [::]:80wskazuje, że coś innego już nasłuchuje portu 80, na przykładsudo lsof -iTCP:80
HBruijn
Dzięki ngn, HBruijn, zaktualizowałem swój post o wyniki wraz z twoimi żądaniami ... Naprawdę nie wiadomo, co używa portu 80 ?!
oly
Przepraszamy, możesz zastąpić to wyjściem dla netstat -ant | grep 80?
ngn

Odpowiedzi:

0

W przypadku pierwszego problemu spróbuj ustawić ServerAliaszmienną tak, aby zawierała następujące elementy na wszystkich sekcjach hosta wirtualnego.

ServerAlias ourdomain.com *.ourdomain.com

Ref: http://httpd.apache.org/docs/2.4/mod/core.html#serveralias

Jak na błąd uruchamiania, wygląda na to, że poprzednie uruchomienie nie zostało poprawnie zamknięte, tzn. Dane wyjściowe netstat i lsof pokazują, że nadal działa i nasłuchuje na porcie 80. Przed próbą ponownego uruchomienia upewnij się, że httpd już nie działa, tzn. Powinieneś nie widzę żadnych danych wyjściowych dla httpd podczas uruchamiania lsof -iTCP:80

Arul Selvan
źródło