HTTPS không hoạt động với Safari


15

Tôi có một phiên bản EC2 với Apache là máy chủ web (và Wildfly là máy chủ ứng dụng, mặc dù tôi không chắc nó có liên quan gì đến vấn đề này không). Ở phía trước EC2, tôi có một bộ cân bằng tải kết thúc HTTPS và áp dụng chứng chỉ SSL.

Cả HTTP và HTTPS đều hoạt động tốt trong Chrome, nhưng tiếc là không có trong Safari. Truy cập http://test.papereed.com hoạt động tốt, nhưng truy cập https://test.papereed.com sẽ báo lỗi

"Safari can't open the page. The error is "The operation couldn't be completed. Protocol error" (NSPOSIXErrorDomain:100)"

Tôi đã xem trong / etc / httpd / log / error_log và / etc / httpd / log / access_log và cả trong bảng điều khiển Safari mà không tìm thấy bất kỳ gợi ý nào để giải quyết vấn đề. Và đó là về kiến ​​thức của tôi đi bao xa :-( Mọi gợi ý về cách theo dõi vấn đề này sẽ được đánh giá cao.

Câu trả lời:


21

curl (nếu được biên dịch với hỗ trợ HTTP / 2) biểu hiện cùng một vấn đề nhưng cho thấy lý do:

Lỗi http2: Đã nhận được trường tiêu đề HTTP không hợp lệ: loại khung: 1, luồng: 1, tên: [nâng cấp], giá trị: [h2, h2c]

Có vẻ như máy chủ của bạn đang cung cấp một bản nâng cấp lên HTTP / 2 mặc dù kết nối đã được thực hiện với HTTP / 2 - điều này không có ý nghĩa gì. Không chỉ vậy, nó bị cấm rõ ràng. Từ RFC 7540, phần 8.1.2.2 :

Điểm cuối KHÔNG PHẢI tạo thông báo HTTP / 2 chứa các trường tiêu đề dành riêng cho kết nối; bất kỳ thông báo nào chứa các trường tiêu đề dành riêng cho kết nối PHẢI được coi là không đúng định dạng (Mục 8.1.2.6) .... các trường tiêu đề dành riêng cho kết nối, chẳng hạn như Keep-Alive, Proxy-Connection, Transfer-Encoding và Nâng cấp

Có vẻ như tôi gặp lỗi vì Apache không nên gửi tiêu đề này bằng HTTP / 2.

Tôi đoán là bạn có một cấu hình như thế này

Protocols h2 h2c http/1.1

Vì các trình duyệt không hỗ trợ HTTP / 2 mà không có TLS và dù sao cũng không cần tiêu đề Nâng cấp với HTTP / 2 qua TLS, tôi khuyên bạn nên thay thế cấu hình này bằng

Protocols h2 http/1.1

Điều này vô hiệu hóa hỗ trợ cho HTTP / 2 không cần thiết mà không có TLS nhưng hy vọng sẽ thoát khỏi tiêu đề Nâng cấp theo cách này vì điều này chỉ cần để nâng cấp từ HTTP đơn giản lên HTTP / 2 đơn giản.

EDIT: theo nhận xét của OP thay đổi Protocolscấu hình không giúp được gì. Cần phải xử lý rõ ràng xung quanh hành vi này (tức là lỗi) mod_http2bằng cách xóa Upgradetiêu đề:

Header unset Upgrade

2
Cảm ơn bạn! Tôi thực sự đã có cấu hình sau: # Enable HTTP/2 by default # https://httpd.apache.org/docs/2.4/mod/core.html#protocols <IfModule mod_http2.c> Protocols h2 h2c http/1.1 </IfModule> Theo khuyến nghị của bạn và thay đổi thành Protocols h2 http/1.1không xóa tiêu đề nâng cấp, vì vậy thay vào đó tôi giữ dòng Giao thức như hiện tại và thêm vào như sau: Header unset Upgradeđể xóa tiêu đề. Không thể nói tôi 100% so với những gì / tại sao xảy ra ở đây nhưng bây giờ nó cũng hoạt động tốt trong Safari :-)
jola

@jola: cảm ơn đã phản hồi. Tôi đã đưa nó vào câu trả lời.
Steffen Ullrich

3

Tôi nghĩ rằng đây là sự cố Safari chứ không phải là sự cố AWS / SSL. Việc tìm kiếm lỗi đó nhận được nhiều, nhiều kết quả trên Google.

Mọi thứ kiểm tra với trang web theo thử nghiệm SSL ShopperSSL Labs Test .

Tôi tìm thấy giải pháp có thể cho vấn đề này.

Giải pháp là đi vào Safari Preferences, bên dưới Quyền riêng tư và liệt kê tất cả Chi tiết. Điều này cung cấp một bản ghi của tất cả các trang web nơi cookie, vv đã được sử dụng. Tôi tìm thấy trang tên miền Weather Network và xóa tất cả nội dung khỏi nó. Sau đó tôi đã có thể tải lại trang Weather Network mà không gặp vấn đề gì. Tôi giả sử điều này sẽ làm việc cho các trang web số ít tương tự khác.

Ngoài ra còn có điều này có thể được thực hiện với Apache.


Vâng, tôi đã googled điều này nhưng không tìm thấy bất cứ điều gì áp dụng trực tiếp (afaiu). Tôi đã đọc giải pháp được đề xuất cho nginx nhưng tôi không chắc làm thế nào / nếu điều này có thể áp dụng cho apache.
jola

Apache chắc chắn sẽ có thể xóa tiêu đề "Nâng cấp" , đó là tất cả những gì Nginx đang làm.
Tim
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.