Okej, więc nigdy wcześniej nie miałem doświadczenia z SSL / HTTPS, zawsze miałem do czynienia ze standardowym HTTP. Niedawno zacząłem pracować na stronie, która będzie wymagała SSL. Więc oczywiście wyszedłem i zbadałem, jak to zrobić i jak zacząć. Udało mi się pomyślnie zainstalować certyfikat SSL - pojawia się zielona kłódka, a serwer odpowiada na żądania HTTPS na porcie 443. Mam problem z tym, że bez względu na to, co robię, nie mogę wyświetlić żadnych stron przy użyciu HTTPS / SSL, jednak wyglądały dobrze na porcie 80 / HTTP (dopóki nie przekieruję HTTP na HTTPS).
Mówiąc wprost, mogę uzyskać dostęp do strony HTTPS absolutnie w porządku, jednak moje strony nie są wysyłane, a 404 jest wysyłane za każde żądanie.
/etc/apache2/sites-available/[name].conf
<VirtualHost *:80>
ServerName [serverName]
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=302]
</VirtualHost>
<VirtualHost *:443>
ServerName [serverName]
ServerAdmin [email]
DocumentRoot [docRoot]
# I know the following SSL cert stuff is correct
SSLEngine On
SSLCertificateFile [...]/[domain].crt
SSLCertificateKeyFile [...]/[certificate].key
SSLCertificateChainFile [...]/[theotherone].crt
ErrorLog ${APACHE_LOG_DIR}/[custom]_error.log
CustomLog ${APACHE_LOG_DIR}/[custom]_access.log combined
<Directory "[docRoot]">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
Nie jestem pewien, czy jest coś jeszcze, na co chciałbyś spojrzeć, czy jakieś inne szczegóły, ale jeśli tak, daj mi znać.
EDYTOWAĆ:
Po kilku przeszukiwaniu plików konfiguracyjnych ustaliłem, że z jakiegokolwiek powodu, podczas łączenia się z HTTPS, serwer używa katalogu głównego dokumentu w domyślnej konfiguracji (/ var / www /), jednak ta domyślna konfiguracja nie jest włączona z a2ensite. Nie mogę ustalić, gdzie znajduje się konfiguracja, która to powoduje
źródło
Rewrite
dyrektywy wyglądają, jakbyś próbował uruchomić Apache za źle skonfigurowanym odwrotnym proxy. Jeśli twój Apache obsługuje domenę bezpośrednio, bez pośrednictwa, powinieneś po prostu usunąć wszystkieRewrite
dyrektywy i zastąpić je jednąRedirect
. I skonfiguruj osobne pliki dziennika dla każdego zVirtualHost
nich, abyś mógł dokładnie zobaczyć, któryVirtualHost
proces przetworzy każde żądanie.Odpowiedzi:
Czy absolutnie konieczne jest przekierowanie wszystkich żądań HTTP na https? Bo wydaje się, że to właśnie próbujesz tutaj zrobić.
Proponuję zacząć od usunięcia następujących wierszy z konf:
Podejrzewam, że tam składnia może być niepoprawna. Następnie spróbuj połączyć się ponownie na każdym protokole http: // i https: //.
źródło
Nie pamiętam dokładnie, jak to wymyśliłem, ale natknąłem się na coś, co sugerowało, że mogę powiedzieć:
<VirtualHost _default_:443>
Zamiast:
<VirtualHost *:443>
Od czasu zastąpienia tego mój protokół SSL działa idealnie.
źródło
Spróbuj edytować plik, aby wyglądał mniej więcej tak:
Jest to bardzo proste conf, jeśli to działa, dodaj przekierowania, jeśli nadal są potrzebne.
Jeśli to nie zadziała, pokaż swój ssl.conf
źródło