Điểm:0

Apache phục vụ HTTP thay vì HTTPS

lá cờ tr

Gần đây tôi đã nâng cấp từ Apache 2.2 lên 2.4 (Tôi biết, tôi nâng cấp chậm, đừng ghét tôi). Tôi có máy chủ ảo sau:

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

Điều này đã làm việc trước đây bằng cách sử dụng cho phép từ tất cả cú pháp và HTTPS đang hoạt động hoàn hảo đối với các máy chủ ảo khác trên cổng 443. Tuy nhiên, khi tôi truy cập https://localhost:30000, nó phục vụ nội dung HTTP thay vì HTTPS. Đây cũng là máy chủ ảo duy nhất sử dụng cổng 30000, vì vậy tôi cho rằng đó không thể là do xung đột với các máy chủ ảo khác được ưu tiên.

Yêu cầu HTTPS:

$ cuộn tròn -v https://localhost:30000
* Xây dựng lại URL thành: https://localhost:30000/
* Tên máy chủ KHÔNG được tìm thấy trong bộ đệm DNS
* Đang cố gắng ::1...
* Đã kết nối với cổng localhost (::1) 30000 (#0)
* đặt thành công vị trí xác minh chứng chỉ:
* Tệp CA: không có
  CApath: /etc/ssl/certs
* SSLv3, bắt tay TLS, Xin chào khách hàng (1):
* lỗi:140770FC:SSL thường trình:SSL23_GET_SERVER_HELLO:giao thức không xác định
* Đóng kết nối 0
curl: (35) lỗi: 140770FC: SSL thường trình: SSL23_GET_SERVER_HELLO: giao thức không xác định

Điều này sau đó tạo ra thông tin sau trong nhật ký truy cập Apache:

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

yêu cầu HTTP

$ cuộn tròn -v http://localhost:30000
* Xây dựng lại URL thành: http://localhost:30000/
* Tên máy chủ KHÔNG được tìm thấy trong bộ đệm DNS
* Đang cố gắng ::1...
* Đã kết nối với cổng localhost (::1) 30000 (#0)
> NHẬN / HTTP/1.1
> Tác nhân người dùng: curl/7.38.0
> Máy chủ: localhost:30000
> Chấp nhận: */*
> 
< HTTP/1.1 200 OK
< Ngày: Thứ Hai, ngày 04 tháng 10 năm 2021 16:47:46 GMT
* Server Apache không bị blacklist
< Máy chủ: Apache
< Thay đổi: Chấp nhận-Mã hóa
< Độ dài nội dung: 481
< Kiểu nội dung: text/html;charset=UTF-8
< 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
 <đầu>
  <title>Chỉ mục của /</title>
 </head>
 <body>
<h1>Chỉ mục của /</h1>
  <bảng>
   <tr><th valign="top"><img src="/icons/blank.gif" alt="[ICO]"></th><th><a href="?C=N;O= D">Tên</a></th><th><a href="?C=M;O=A">Sửa lần cuối</a></th><th><a href="?C =S;O=A">Kích thước</a></th><th><a href="?C=D;O=A">Mô tả</a></th></tr>
   <tr><th colspan="5"><hr></th></tr>
   <tr><th colspan="5"><hr></th></tr>
</bảng>
</body></html>

Chỉnh sửa:

Tôi chỉ nhận thấy một điều. Tôi có -Chỉ số set, nhưng nội dung HTTP được trả về là một chỉ mục thư mục. Vì vậy, tôi nghĩ rằng có thể bằng cách nào đó một máy chủ ảo khác đang được sử dụng. Tôi vẫn không biết làm thế nào điều đó có thể xảy ra vì đây là người duy nhất sử dụng cổng 30000.

Steffen Ullrich avatar
lá cờ se
Vui lòng kiểm tra nhật ký lỗi của máy chủ để biết bất kỳ manh mối nào. Ngoài ra, hãy thử tắt VirtualHost hoàn chỉnh này và xem điều gì sẽ xảy ra - kết nối sẽ bị lỗi hoàn toàn trừ khi có một số thứ khác đang chạy ở cổng này.
lá cờ tr
@SteffenUllrich Không có gì liên quan trong nhật ký lỗi.
Steffen Ullrich avatar
lá cờ se
Ngoài ra, `SSLCertificateChainFile` đã lỗi thời với 2.4
Steffen Ullrich avatar
lá cờ se
*"Không có gì liên quan trong nhật ký lỗi."* - Có thể bạn cho rằng thông tin nhật ký không liên quan ngay cả khi chúng không liên quan? Vui lòng cách ly cấu hình cụ thể để cổng 30000 là thứ duy nhất trong cấu hình. Sau đó, mọi thứ hiển thị trong tệp nhật ký phải phù hợp. Ngoài ra, đây có phải là tệp nhật ký lỗi duy nhất cho toàn bộ Apache không? Có lẽ bạn cũng cần xem xét các nhật ký khác.
lá cờ tr
@SteffenUllrich Điều duy nhất trong nhật ký lỗi là thông báo khởi động lại máy chủ. Và không, đó không phải là tệp nhật ký lỗi duy nhất. Hầu như tất cả các máy chủ ảo đều có tệp nhật ký chuyên dụng của riêng chúng. Dù sao, tôi đã tìm ra vấn đề của mình. Câu trả lời được đăng.
Điểm:2
lá cờ tr

Ok, tôi đã tìm ra vấn đề của mình. trước đây tôi đã sử dụng /etc/apache2/sites-enabled/domain, nhưng tôi cần thay đổi nó thành /etc/apache2/sites-enabled/domain.conf.

Steffen Ullrich avatar
lá cờ se
Lời giải thích đó là lạ đối với tôi, ít nhất là xem xét những gì bạn đã viết trong câu hỏi. Nếu cấu hình cho Virtualhost này hoàn toàn không được tải thì sẽ không có gì trả lời trên cổng 30000 cả - với điều kiện là bạn đã tuyên bố rằng đây là Virtualhost duy nhất sử dụng cổng này.
lá cờ tr
Tôi có `Listen 30000` trong `ports.conf`, vì vậy tôi đoán rằng phải có một VirtualHost mặc định lắng nghe trên tất cả các cổng mà không thực sự chỉ định riêng từng cổng. Thực hiện `grep -HR 30000 /etc/apache2/` chỉ trả về tệp `ports.conf` và máy chủ ảo duy nhất mà tôi đã thiết lập trên cổng đó.
Steffen Ullrich avatar
lá cờ se
Phải, tôi quên rằng với Apache, người ta cần khai báo trước các cổng được sử dụng.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.