2017-08-19 31 views
10

Tôi có một tên miền phụ (test.XXXX.com) trỏ đến AWS ELB chấp nhận yêu cầu HTTP (80) và HTTPS (443). Tôi đã định cấu hình SSL chứng nhận cho 443 cho kết nối HTTPS. Tôi đã cố gắng làm HTTP thành HTTPS chuyển hướng ở cấp Tomcat bằng cách thay đổi web.xml và server.xml như đã đề cập trongChuyển đổi HTTP sang HTTPS cho máy chủ AWS ELB và Tomcat7

http://www.journaldev.com/160/steps-to-configure-ssl-on-tomcat-and-setup-auto-redirect-from-http-to-https

Nhưng vấn đề là tôi cần một thiết bị đầu cuối để kiểm tra sức khỏe AWS ELB mà không làm chuyển hướng HTTP sang HTTPS. Tôi đã cố gắng giải pháp khác nhau nhưng không có success.I cũng đã cố gắng

<security-constraint> 
       <web-resource-collection> 
         <web-resource-name>Protected Context</web-resource-name> 
         <url-pattern>/*</url-pattern> 
       </web-resource-collection> 

       <user-data-constraint> 
         <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
       </user-data-constraint> 
    </security-constraint> 
    <security-constraint> 
       <web-resource-collection> 
         <web-resource-name>Protected Context</web-resource-name> 
         <url-pattern>/XXXXX/XXXXXX.html</url-pattern> 
       </web-resource-collection> 

    </security-constraint> 

Và server.xml máy chủ của tôi đã theo cấu hình như

<Connector port="80" protocol="HTTP/1.1" 
       connectionTimeout="20000" 
       redirectPort="443" /> 


<Connector port="443" maxThreads="2000" scheme="https" secure="true" SSLEnabled="true" keystoreFile="/home/XXXXX/XXXXX.keystore" 
       keystorePass="XXXXX" clientAuth="false" keyAlias="XXXX" 
       sslProtocol="TLS" protocol="org.apache.coyote.http11.Http11Protocol"/> 

Nhưng khi cố gắng để truy cập nó thông qua trình duyệt nó mang lại cho ngoại lệ như ERR_TOO_MANY_REDIRECTS .

enter image description here

+0

Để kiểm tra sức khỏe bạn có mệt mỏi khi sử dụng tuyến đường cụ thể bị loại trừ khỏi chuyển hướng không? – Ashan

+0

@Ashan Vâng..Đó bị loại trừ khỏi chuyển hướng HTTP sang HTTPS và hoạt động tốt. Nhưng các trang khác không thể truy cập được do ERR_TOO_MANY_REDIRECTS – MasterCode

+0

Nếu bạn đã cấu hình Tomcat với chứng chỉ SSL, thì trên bộ cân bằng tải của bạn, bạn có thể sử dụng 'HTTPS 443 -> HTTPS 443' –

Trả lời

3

tôi có một giải pháp cho vấn đề của bạn, nhưng nó không liên quan đến tomcat. Bạn có thể sử dụng phân phối Cloudfront.
Hãy để tôi nhấn mạnh một vài configs chìa khóa để đạt được điều này thông qua một phân phối CloudFront:

  • Chọn một Distribution Web
  • Chọn ELB của bạn trong danh sách thả xuống cho xứ Domain Name. origin Đường dẫn sẽ trống và Id gốc chỉ là mã nhận dạng bạn chọn.
  • Bây giờ trong Cài đặt hành vi Cache mặc định, vui lòng chọn Chuyển hướng HTTP sang HTTPS cho Chính sách giao thức người xem. Vui lòng xem kỹ tất cả các cài đặt khác và chọn những gì phù hợp với bạn. Chúng phải khá đơn giản và dễ hiểu. (Vui lòng nhập tên miền của bạn- test.xxxx.com để thay thế tên miền)
  • Nhấp vào tạo phân phối.
  • Sau khi phân phối được tạo, hãy chuyển đến phần phân phối và chuyển đến tab hành vi.
  • tại đây bạn sẽ thấy rằng đã có mục nhập mặc định. Chuyển đến Tạo hành vi, nhập vào mẫu đường dẫn của bạn. do đó, nếu url kiểm tra sức khỏe của bạn là kiểm tra.xxxx.com/healthcheck thì mẫu đường dẫn của bạn sẽ trở thành /healthcheck.
  • Vui lòng chọn HTTP và HTTPS cho Chính sách giao thức người xem.
  • Cuối cùng, trong tuyến đường53 của bạn, vui lòng thêm bản ghi cho tên miền của bạn và trỏ vào bản phân phối trên đám mây mà bạn vừa tạo.

Vì vậy, điều này thực sự hiệu quả, cần chuyển hướng khỏi tomcat và được xử lý ở cấp độ đám mây. Tất cả các yêu cầu theo mặc định được chuyển hướng đến HTTPS trong khi chỉ cho các yêu cầu HTTP đường dẫn/healthcheck được cho phép. Chuyển hướng không cần phải được xử lý ở các cấp thấp hơn. Vui lòng cho tôi biết nếu điều này phù hợp với bạn. Ngoài ra, xin lưu ý rằng tuyến đường53 và thay đổi trên đám mây mất thời gian để thúc đẩy. vì vậy, vui lòng đợi đủ để thử nghiệm thành công

+0

Tôi đang tìm kiếm điều gì đó khác biệt với đám mây, tôi đánh giá cao những nỗ lực của bạn – MasterCode

0

Vì bạn có chuyển hướng HTTP sang HTTPS hoạt động trong Tomcat, giải pháp đơn giản nhất để bạn có thể coi điều hướng là một phản hồi hợp lệ.

Bạn không thể làm điều này với Bộ cân bằng tải đàn hồi cổ điển, nhưng bạn có thể làm mới với Application Load Balancer mới.

Tôi đề nghị bạn chuyển cân bằng tải của mình sang ALB mới và configure the health check để chấp nhận 200-399 làm mã phản hồi lành mạnh.

Bạn cũng sẽ nhận được các lợi ích khác bằng cách chuyển sang Ứng dụng cân bằng tải mới như thế là rẻ hơn mỗi giờ và có thể định tuyến đến các nhóm cá thể khác nhau dựa trên đường dẫn và tên máy chủ.

0

Các ELB lành kiểm tra có thể được cấu hình để sử dụng một thiết bị đầu cuối https, đánh dấu vào tùy chọn: ping protocolhttp://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-healthchecks.html

Ping Nghị định thư

Giao thức sử dụng để kết nối với các ví dụ.

giá trị hợp lệ: TCP, HTTP, HTTPS, và SSL

mặc định Console: HTTP

CLI/API mặc định: TCP

Bạn cũng có thể chỉ cần cố gắng TCP trong cả hai cổng 80/443 và điều này sẽ bỏ qua ở tất cả các chuyển hướng.

+0

Nếu bạn nhìn vào ảnh chụp màn hình, họ đang sử dụng ELB cho HTTPS - bạn có thể thấy một vài ký tự đầu tiên của ID chứng nhận - vì vậy việc sử dụng HTTPS để kiểm tra tình trạng không hoạt động. Sử dụng TCP cho kiểm tra sức khỏe sẽ làm việc mặc dù. – Raniz

Các vấn đề liên quan