Puncte:0

Apache servește HTTP în loc de HTTPS

drapel tr

Am făcut recent upgrade de la Apache 2.2 la 2.4 (știu, sunt lent să fac upgrade, nu mă urăști). Am următoarea gazdă virtuală:

<VirtualHost _default_:30000>
    DocumentRoot /opt/phpmyadmin
    ErrorLog ${APACHE_LOG_DIR}/error.log

    <Directory /opt/phpmyadmin>
        Options -Indexes +IncludesNOEXEC +FollowSymLinks
        Require all granted
    </Directory>
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
    SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
    LogLevel warn
</VirtualHost>

Acest lucru a funcționat anterior folosind Permite de la toți sintaxă, iar HTTPS funcționează perfect pentru alte gazde virtuale de pe portul 443. Cu toate acestea, când merg la https://localhost:30000, servește conținut HTTP în loc de HTTPS. Aceasta este, de asemenea, singura gazdă virtuală care utilizează portul 30000, așa că presupun că nu se poate datora conflictelor cu alte gazde virtuale care au prioritate.

Solicitare HTTPS:

$ curl -v https://localhost:30000
* URL reconstruit la: https://localhost:30000/
* Numele de gazdă NU a fost găsit în memoria cache DNS
* Încerc ::1...
* Conectat la localhost (::1) portul 30000 (#0)
* setați cu succes locațiile de verificare a certificatelor:
* CAfile: niciunul
  CApath: /etc/ssl/certs
* SSLv3, strângere de mână TLS, salut client (1):
* eroare:140770FC:Rutine SSL:SSL23_GET_SERVER_HELLO:protocol necunoscut
* Închiderea conexiunii 0
curl: (35) eroare:140770FC:Rutine SSL:SSL23_GET_SERVER_HELLO:protocol necunoscut

Aceasta produce apoi următoarele în jurnalul de acces Apache:

127.0.0.1:80 XXX.XXX.XXX.149 - - [04/Oct/2021:13:14:37 -0400] "\x16\x03\x01\x02" 400 0 "-" "-"

Solicitare HTTP

$ curl -v http://localhost:30000
* Adresa URL reconstruită la: http://localhost:30000/
* Numele de gazdă NU a fost găsit în memoria cache DNS
* Încerc ::1...
* Conectat la localhost (::1) portul 30000 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.38.0
> Gazdă: localhost:30000
> Accept: */*
> 
< HTTP/1.1 200 OK
< Data: Luni, 04 Oct 2021 16:47:46 GMT
* Serverul Apache nu este pe lista neagră
< Server: Apache
< Variază: Acceptare-Codificare
< Lungimea conținutului: 481
< Content-Type: text/html;charset=UTF-8
< 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
 <cap>
  <title>Index pentru /</title>
 </cap>
 <corp>
<h1>Index pentru /</h1>
  <tabel>
   <tr><th valign="top"><img src="/icons/blank.gif" alt="[ICO]"></th><th><a href="?C=N;O= D">Nume</a></th><th><a href="?C=M;O=A">Ultima modificare</a></th><th><a href="?C =S;O=A">Dimensiune</a></th><th><a href="?C=D;O=A">Descriere</a></th></tr>
   <tr><th colspan="5"><hr></th></tr>
   <tr><th colspan="5"><hr></th></tr>
</tabel>
</body></html>

Editați | ×:

Am observat doar un lucru. eu am -Indici setat, dar conținutul HTTP returnat este un index de director. Așa că mă gândesc că poate se folosește cumva o altă gazdă virtuală. Încă nu știu cum este posibil asta, deoarece acesta este singurul care folosește portul 30000.

Steffen Ullrich avatar
drapel se
Vă rugăm să verificați jurnalul de erori al serverului pentru orice indicii. De asemenea, încercați să dezactivați acest VirtualHost complet și să vedeți ce se întâmplă - conexiunea ar trebui să eșueze complet, cu excepția cazului în care există alt lucru la acest port care rulează.
drapel tr
@SteffenUllrich Nu există nimic relevant în jurnalul de erori.
Steffen Ullrich avatar
drapel se
De asemenea, `SSLCertificateChainFile` este învechit cu 2.4
Steffen Ullrich avatar
drapel se
*„Nimic relevant nu este în jurnalul de erori.”* - Poate considerați că informațiile din jurnal sunt irelevante, chiar dacă nu sunt? Vă rugăm să izolați configurația specifică, astfel încât portul 30000 să fie singurul lucru din configurație. Apoi, tot ceea ce apare în fișierele jurnal ar trebui să fie relevant. De asemenea, acesta este singurul fișier jurnal de erori pentru întregul Apache? Poate că trebuie să te uiți și în alte jurnale.
drapel tr
@SteffenUllrich Singurul lucru din jurnalul de erori au fost mesajele de repornire a serverului. Și nu, nu este singurul fișier jurnal de erori. Aproape toate gazdele virtuale au propriul lor fișier jurnal dedicat. Oricum, mi-am dat seama de problema. Răspuns postat.
Puncte:2
drapel tr

Ok, mi-am dat seama de problema. Am folosit anterior /etc/apache2/sites-enabled/domain, dar trebuia să-l schimb în /etc/apache2/sites-enabled/domain.conf.

Steffen Ullrich avatar
drapel se
Această explicație este ciudată pentru mine, cel puțin având în vedere ce ai scris la întrebare. Dacă configurația pentru acest VirtualHost nu este încărcată deloc, atunci nu ar trebui să răspundă deloc pe portul 30000 - având în vedere că ați susținut că acesta este singurul VirtualHost care utilizează acest port.
drapel tr
Am `Listen 30000` în `ports.conf`, așa că bănuiesc că trebuie să existe un VirtualHost implicit care ascultă pe toate porturile fără a le specifica de fapt individual. Efectuarea unui `grep -HR 30000 /etc/apache2/` returnează doar fișierul `ports.conf` și singura gazdă virtuală pe care am configurat-o pe acel port.
Steffen Ullrich avatar
drapel se
Corect, am uitat că cu Apache trebuie să predeclar porturile folosite.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.