Lỗi khi bắt tay SSL với máy chủ từ xa


118

Tôi có Apache2(nghe trên 443) và một ứng dụng web đang chạy Tomcat7(nghe trên 8443) Ubuntu.

Tôi đặt apache2 làm proxy ngược để tôi truy cập ứng dụng web thông qua cổng 443 thay vì 8443. Ngoài ra, tôi cần có giao tiếp SSL không chỉ giữa trình duyệt và apache2 mà còn giữa apache2 và tomcat7, do đó tôi đặt SSL trên cả apache2 và tomcat7 . Nếu tôi cố gắng truy cập ứng dụng web bằng cách liên hệ trực tiếp với tomcat7, mọi thứ đều ổn. Vấn đề là khi tôi cố gắng truy cập ứng dụng web của tomcat thông qua apache2 (proxy ngược), trên trình duyệt xuất hiện lỗi:

Proxy Error
The proxy server could not handle the request GET /web_app.
Reason: Error during SSL Handshake with remote server

Apache không xác thực chứng chỉ bạn đã cài đặt trên tomcat. Nó có phải là chứng chỉ tự ký không? Hay là do CA nội bộ tạo ra?
MK.

2
Nó được tự ký bằng lệnh này: openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
user2791481

3
serverfault.com/questions/356678/… Tôi nghĩ đây là những gì bạn muốn: SSLProxyVerify none SSLProxyCheckPeerCN tắt
MK.

9
Tốt hơn nên đặt thành SSLProxyCACertificateFilechứng chỉ CA riêng của bạn, thay vì chỉ tắt xác minh.
ndbroadbent

như được giải thích trong blog này, bạn có thể tắt kiểm tra SSL.
HybrisHelp

Câu trả lời:


265

Nhận xét của MK đã chỉ cho tôi một hướng đi đúng đắn.

Trong trường hợp Apache 2.4 trở lên, có các giá trị mặc định khác nhau và một chỉ thị mới.

Tôi đang chạy Apache 2.4.6 và tôi phải thêm các lệnh sau để nó hoạt động:

SSLProxyEngine on
SSLProxyVerify none 
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off

Vì vậy, điều này sẽ tắt bảo vệ, nhưng miễn là lưu lượng truy cập là cục bộ (tức là, 127.0.0.1:8443 ) thì sẽ ít vấn đề hơn, phải không?
bgStack

5
Chà, nó không tắt bảo vệ mà không cần quan tâm đến mã hóa. Lưu lượng truy cập vẫn được mã hóa. Điều này chỉ vô hiệu hóa việc kiểm tra chứng chỉ để đảm bảo rằng nó là của một cơ quan đáng tin cậy. Vì vậy, nếu bạn tin tưởng máy chủ, bạn sẽ không gặp sự cố. Nhưng có, đối với giao thông địa phương, tôi nghĩ bạn cũng ổn.
mydoghasworms

1
Cảm ơn mydoghasworms. Chỉ thị của bạn hoạt động trong phiên bản Máy chủ: Apache / 2.4.6. Nếu ai đó cần biết phiên bản của httpd, hãy sử dụng cái này: httpd -V
JRichardsz

3

Tôi có 2 máy chủ được thiết lập trên docker, proxy ngược và máy chủ web. Lỗi này bắt đầu xảy ra đột ngột cho tất cả các trang web của tôi sau 1 năm. Khi thiết lập trước đó, tôi đã tạo chứng chỉ tự ký trên máy chủ web.

Vì vậy, tôi phải tạo lại chứng chỉ SSL và nó bắt đầu hoạt động ...

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ssl.key -out ssl.crt


1

Đối mặt với vấn đề tương tự như OP:

  • Tomcat đã trả lại phản hồi khi truy cập trực tiếp qua SOAP UI
  • Không tải tệp html
  • Khi sử dụng thuộc tính Apache được đề cập trong câu trả lời trước, trang web xuất hiện nhưng AngularJS không thể nhận được phản hồi HTTP

Chứng chỉ SSL Tomcat đã hết hạn trong khi trình duyệt cho thấy nó là an toàn - chứng chỉ Apache còn lâu mới hết hạn. Cập nhật tệp KeyStore Tomcat đã giải quyết được sự cố.

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.