Apache2 sunucumda HTTPS'yi etkinleştirdikten sonra - her istekte 404 hata alıyorum [kapalı]


10

Tamam, SSL / HTTPS ile daha önce hiç deneyimim olmadı, sadece standart HTTP ile uğraştım. Son zamanlarda SSL'ye ihtiyaç duyan bir sitede çalışmaya başladım. Tabii ki, dışarı çıktım ve nasıl başlayıp başlayacağımı araştırdım. SSL sertifikasını başarıyla yükleme aşamasına geçtim - yeşil asma kilit görünür ve sunucu 443 numaralı bağlantı noktasındaki HTTPS isteklerine yanıt verir. Sahip olduğum sorun ne olursa olsun HTTPS / kullanarak herhangi bir sayfa görünmesini sağlayamıyorum SSL, ancak 80 / HTTP bağlantı noktasında iyi görünüyordu (HTTP'yi HTTPS'ye yönlendirene kadar).

Basitçe söylemek gerekirse, HTTPS sitesine kesinlikle iyi erişebilirim, ancak sayfalarım gönderilmiyor, her istek için bir 404 gönderiliyor.


/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>

Bakmak isteyebileceğiniz başka bir şey veya başka ayrıntı olup olmadığından emin değilim, ama varsa bana bildirin.

DÜZENLE:

Yapılandırma dosyalarında biraz arama yaptıktan sonra, HTTPS'ye bağlanırken sunucunun varsayılan yapılandırmada (/ var / www /) belge kökünü kullandığını ancak bu varsayılan yapılandırmanın a2ensite ile etkinleştirilmediğini tespit ettim. Buna neden olan yapılandırmanın nerede bulunduğunu anlayamıyorum


Kişisel Rewritebir kötü yapılandırılmış ters proxy arkasında Apache çalıştırmak için çalışıyoruz gibi direktifler görünüyor. Apache'niz etki alanına herhangi bir proxy olmadan doğrudan hizmet veriyorsa, tüm Rewriteyönergeleri bırakmanız ve yerine bir tane eklemeniz gerekir Redirect. Ve her bir istek için VirtualHosthangi VirtualHostişlemi tam olarak görebileceğiniz şekilde ayrı günlük dosyaları yapılandırın .
kasperd

Yeniden Yazmalara gelince, onları sadece geçici bir yeniden yönlendirme yapmak için kullanıyordum (o aşamada% 100 emin değildim), şimdi Redirect'in bunu mükemmel bir şekilde yapabildiğini öğrendim (evet, bunu bilmediğim kötü ). Ayrı günlük dosyaları ile ilgili olarak, o zamandan beri yaptım. Ayrıca sorunun ne olduğunu anladım ve bunu yansıtacak şekilde güncelleneceğim.
Michael Longhurst

Yanıtlar:


11

Tüm http isteklerini https'ye yönlendirmek kesinlikle gerekli mi? Çünkü burada yapmaya çalıştığınız şey bu.

Aşağıdaki satırları konunuzdan kaldırarak başlamanızı öneririm:

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=302]

Sözdiziminin orada yanlış olabileceğinden şüpheleniyorum. Ardından her http: // ve https: // protokolüne tekrar bağlanmayı deneyin.


Bu etki alanında bir yönetici paneli yaptığımdan, neredeyse tüm isteklerin hassas bilgiler içerdiğinden, tüm HTTP'nin HTTPS'ye yönlendirmesini istediğimden eminim. Yönlendirmenin mükemmel çalıştığı için sözdiziminin doğru olduğunu biliyorum. Sorunun, sunucunun belirtmiş olduğum belge
kökü

Belge yolu yeniden yönlendirme olmadan çalışıyor mu? Denemek imo değer
Ivan

İlk önce diğer cevabı deniyorum, eğer başarısız olursa önce vereceğim
Michael Longhurst

Bu da denedi, ama boşuna
Michael Longhurst

Tamam, *: 443'teki yıldız işaretini sunucunun gerçek IP'si ile değiştirmeyi deneyin, aynı bağlantı noktası 80 için de geçerlidir. Ayrıca belge kök yolunun sözdiziminin /
Ivan

11

Bunu nasıl anladığımı tam olarak hatırlayamıyorum, ama koymayı öneren bir yere rastladım:

<VirtualHost _default_:443>

Onun yerine:

<VirtualHost *:443>

Bunu değiştirdiğimden beri SSL'im mükemmel bir şekilde çalışıyor.


10

Dosyanızı aşağıdaki gibi görünecek şekilde düzenlemeyi deneyin:

Bu çok basit bir konudur, eğer işe yararsa yine de yönlendirmelerinizi ekleyin.

Bu işe yaramazsa, lütfen ssl.conf'nuzu gösterin

NameVirtualHost *:80
NameVirtualHost *:443

<VirtualHost *:80>
         <Directory "[docRoot]">
        AllowOverride All
        </Directory>
        DocumentRoot [docRoot]
        ServerName [serverName]
</VirtualHost>

<VirtualHost *:443>
        SSLEngine on
       SSLCertificateFile [...]/[domain].crt
       SSLCertificateKeyFile [...]/[certificate].key
       SSLCertificateChainFile [...]/[theotherone].crt
         <Directory "[docRoot]">
        AllowOverride All
        </Directory>
        DocumentRoot [docRoot]
        ServerName [serverName]
</VirtualHost>

Hayır, hala çalışmıyor, / var / www / html içine yerleştirdiğim geçici index.html dosyasını gösteriyor. Bir macunu conf ile bağlayacağım
Michael Longhurst


Sadece değişiklik yaptıktan sonra apache'yi yeniden başlattığınızı doğrulamak için mi?
Anthony Fornito

Evet, değiştirdiğim her şey ve her şey yeniden
başlatıyorum

Hayal edebildiğim ve CTRL + F'yi DocumentRoot'un "/ var / www / html" olarak ayarlandığı herhangi bir yerde bulmak için çalıştırabildiğim her yapılandırma dosyasını açtım ve hiçbir şey yapmadı. Öyleyse, hayatım boyunca apache'nin / var / www / html'den neden okunmuyorsa neden okuduğunu anlayamıyorum
Michael Longhurst
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.