Chuyển hướng https sang https khác


28

Tôi đã googling cho câu hỏi này, và thật trớ trêu thay tôi không thể tìm thấy một câu trả lời cụ thể. Tôi đã tự trả lời câu hỏi này trong quá khứ và bây giờ tôi không thể nhớ lời giải thích của riêng mình.

Một vài lần trong năm, sẽ có người yêu cầu tôi làm việc này. Tôi muốn chỉ cho họ một số loại bài báo đáng kính giải thích điều này.

Tôi muốn lấy URL tại https://www.example.com/ và chuyển hướng lưu lượng truy cập đến https://www.example2.com/ .

Tôi tin rằng điều này nên có thể về mặt kỹ thuật, nhưng là không mong muốn. Điều gì là sai với phương pháp này? Các trình duyệt sẽ nhận được một cửa sổ bật lên bảo mật vì tôi đang chuyển hướng chúng đến một trang web khác? Bất cứ ai cũng có thể cung cấp một liên kết đến một số tài liệu đáng kính giải thích điều này?


4
Tình huống của bạn có thể gây phiền nhiễu, nhưng không phải là mỉa mai;)
Gareth

Câu trả lời:


17

Bạn có thể làm điều này, cả hai trang web cần phải có chứng chỉ SSL hợp lệ. Bằng cách này, các trình duyệt sẽ không cung cấp một cửa sổ bật lên bảo mật. Tuy nhiên, nếu cả hai trang web tồn tại trên cùng một máy chủ, cả hai miền cần được lưu trữ từ các địa chỉ IP khác nhau.

Một máy chủ web nhìn vào tiêu đề "Máy chủ" trong yêu cầu HTTP để xem trang web nào nó cần phục vụ. Đàm phán SSL xảy ra trước khi yêu cầu HTTP được gửi, vì vậy tại thời điểm đó, máy chủ web không thể biết trang web nào sẽ hiển thị. Nó sẽ luôn gửi cùng một chứng chỉ đến trình duyệt.

Có hai cách để giải quyết vấn đề này:

  • Có chứng chỉ ký tự đại diện cho * .example.com, vì vậy tất cả các tên miền phụ có thể chia sẻ cùng một chứng chỉ.
  • Chạy mỗi trang SSL ở một địa chỉ IP khác nhau. Bằng cách này, máy chủ web biết chứng chỉ SSL nào có thể gửi tới trình duyệt, bằng cách kiểm tra địa chỉ IP nhận được kết nối đến.

Lưu ý rằng hoàn toàn có thể đính kèm nhiều địa chỉ IP vào cùng một bộ điều hợp mạng, chỉ là bạn cần một địa chỉ IP thứ hai có sẵn trong không gian địa chỉ IP của bạn.

Cập nhật: Ngày nay, bạn có thể chạy nhiều trang SSL tại một IP. Để kích hoạt tính năng này, hãy định cấu hình hỗ trợ SNI tại máy chủ web của bạn. Hầu hết các trình duyệt hiện đại (trừ windows XP và Android 2) đều hỗ trợ điều này.


1
Bạn cũng có thể lưu trữ nhiều trang web SSL tại cùng một IP theo Chứng chỉ truyền thông hợp nhất (UCC), xem help.godaddy.com/article/3908
ManiacZX

Một cách giải quyết khác cho vấn đề nhiều tên máy chủ / một chứng chỉ IP là sử dụng số cổng thay thế. Điều này không lý tưởng, vì một số tường lửa / điểm truy cập công cộng chặn không lưu lượng truy cập 80/443.
Bryan Agee

5

Tôi chưa bao giờ thử điều này vì vậy tôi không nói từ kinh nghiệm cụ thể, nhưng nó sẽ hoạt động. Bạn sẽ cần phải có chứng chỉ SSL hợp lệ cho https://www.example.com vì tên máy chủ được mã hóa bên trong tiêu đề HTTP để máy chủ của bạn không biết chuyển hướng cho đến khi được giải mã. Sau đó, nó sẽ chuyển hướng như một yêu cầu HTTP bình thường.


2

Tại sao điều này là không mong muốn?

Ví dụ, cả Big Bank và Little Bank đều chạy các trang web trên https để mang đến cho khách hàng cảm giác an toàn hạnh phúc. Ngân hàng lớn mua Little Bank. Tại một số điểm, dân IT sẽ thiết lập chuyển hướng cho https://www.littlebank.com đến https://www.bigbank.com . Đây là một lý do chính đáng để chuyển hướng từ https sang https.

Điều này sẽ làm việc tốt.


Kịch bản mà bạn mô tả sẽ ổn, tuy nhiên nếu bạn đã điều hướng đến www.littlebank.com và được chuyển hướng đến www.bigbank.com trong khi có địa chỉ thực tế bị che giấu để trình duyệt vẫn hiển thị www.littlebank.com, thì THAT không tốt Điều. Điều này khá phổ biến với các trang web không bảo mật, nơi nó không liên quan, nhưng chắc chắn bạn có thể thấy những nguy hiểm cố hữu khi hiển thị bản thân như một trang web an toàn mà thực tế bạn không phải vậy.
Charles

1

Một sự ngắt kết nối mà tôi nghĩ có trong các phản hồi hiện tại có thể xảy ra với bạn là trong bất kỳ trường hợp nào, một chuyển hướng thực sự (ví dụ: trình duyệt được chuyển sang www.example2.com) sẽ ổn nhưng nếu bạn che giấu điều này sao cho trình duyệt vẫn nhìn vào www.example.com khi thực tế bạn đã gửi nó đến www.example2.com, đây là nơi bạn sẽ thấy các cảnh báo bảo mật chính xác vì bạn có thể đang cố gắng giả mạo người dùng.

Phiên bản ngắn là một chuyển hướng bình thường nên ổn, mặt nạ địa chỉ có thể sẽ để lại cho bạn rất nhiều giải thích để làm.


Cảm ơn Charles. Đó phải là tình huống "không mong muốn" mà tôi đã nghĩ đến.
Stefan Lasiewski

0

Như đã thấy, vấn đề này có thể được giải quyết trên một lớp vận chuyển. Giả sử bạn có bản ghi DNS A example.com trỏ đến 192.168.0.1. Khi bạn nhập https://example.com trong trình duyệt, PC của bạn đã thiết lập kết nối TCP đến máy chủ có IP 192.168.0.1, trong đó một số quy trình lắng nghe trên cổng 443. Điều gì xảy ra nếu cùng lúc máy chủ (không cố gắng tìm hiểu chi tiết về dữ liệu được gửi qua phiên TCP này như bắt đầu đàm phán SSL) thiết lập kết nối TCP tới 192.168.0.2 (máy chủ khác với DNS A example2.com trỏ đến nó. HA proxy linux được cài đặt trên máy chủ đầu tiên có thể giải quyết vấn đề này với một cấu hình như thế:

defaults
        log    global
        mode    tcp
        retries 2
        option redispatch
        option tcplog
        option tcpka
        option clitcpka
        option srvtcpka
        timeout connect 5s      
        timeout client  24h     #timeout client->haproxy(frontend)
        timeout server  60m

listen front443 192.168.0.1:443
    server back443 192.168.0.2:443

Nhưng điều này sẽ gây ra lỗi chứng chỉ SSL trừ khi máy chủ web example2.com của bạn sẽ hiển thị chứng chỉ SSL với CN = example2.com và SAN = example.com chẳng hạn.

Hoặc bạn có thể thiết lập một chân trời slpit DNS khi từ người dùng perstective example.com và example2.com giải quyết đến 192.168.0.1.

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.