Nhiều tên miền có SSL trên cùng một IP


Câu trả lời:


28

Tôi nghĩ rằng đó là một ý tưởng tốt để giải thích vấn đề thực sự là gì với máy chủ ảo và SSL / TLS.

Khi bạn kết nối với máy chủ apache qua HTTP, bạn sẽ gửi một bộ tiêu đề http cùng. Họ trông như thế này:

GET /index.html HTTP/1.1
 Host: www.nice-puppies.com

Nếu bạn có apache lưu trữ ảo sẽ xem xét trường máy chủ, sau đó tìm nạp đúng index.html cho bạn. Vấn đề là khi bạn thêm SSL / TLS. Máy chủ sẽ thiết lập mã hóa trước khi bạn gửi yêu cầu http. Do đó, máy chủ không biết bạn sẽ truy cập www.nice-puppies.com hay www.evil-haxxor.com cho đến khi hoàn tất xác thực / mã hóa. Máy chủ không thể đoán (vì việc gửi chứng chỉ sai cung cấp cho bạn một thông báo lỗi khó chịu).

Một giải pháp là chứng chỉ ký tự đại diện (như đã đề cập ở trên), có giá trị cho * .nice-puppypies.com. Bằng cách đó, bạn có thể sử dụng cùng một chứng chỉ cho nhiều tên miền, nhưng bạn không thể có chứng chỉ * .com (không sao, bạn có thể, nhưng nó sẽ rất tệ cho mọi người khác), vì vậy, nói chung bạn sẽ cần IP riêng cho mỗi tên miền Tên miền HTTPS.


4
Giải thích tốt, nhưng bạn có thể có chứng chỉ UC sẽ cho phép nhiều tên miền trong một chứng chỉ
Sam Cogan

1
Có, bạn có thể có Chứng chỉ Truyền thông Hợp nhất (UCC / UC certs). Tôi có lẽ nên đề cập đến chúng. Chúng, như tôi đã thấy, hầu hết được sử dụng với Exchange / Office Communication Server. Và nếu bạn sử dụng cùng một chứng chỉ cho các trang web khác nhau, bạn lạm dụng ngữ nghĩa x509. Nhưng họ làm việc trên hầu hết các ngăn xếp TLS.
pehrs

6
Cũng SNI. Tuyên bố của bạn không còn dứt khoát nữa, pehrs. Giải thích của bạn là chính xác về mặt lịch sử nhưng không còn phản ánh các công nghệ hiện tại.
Warner

4
SNI không (chưa?) Hoạt động với IE6 trên Windows XP. Những loại giới hạn giá trị, xem xét thị phần. Tôi tin rằng người dùng ban đầu quan tâm nhiều hơn đến những gì sẽ xảy ra hơn là các bản hack tồn tại để khắc phục nó.
pehrs

Đã cố gắng sửa lỗi chính tả ở cuối SHTTP thành HTTPS nhưng điều này đã bị từ chối vì một chỉnh sửa quá nhỏ.
Stuart

8

Giải pháp thực sự cho vấn đề này là "Chỉ định tên máy chủ":

http://en.wikipedia.org/wiki/Server_Name_Inication

Nó chỉ bắt đầu được đưa vào máy chủ và máy khách web, vì vậy nó không thực sự là thứ bạn có thể sử dụng bây giờ, nhưng hy vọng trong một vài năm tới, điều này sẽ không còn là vấn đề lớn.


2

Vấn đề là chứng chỉ SSL bị ràng buộc với địa chỉ IP không phải tên máy chủ. Khi kết nối đến địa chỉ IP cho yêu cầu HTTPS, hành động đầu tiên là thiết lập giao tiếp SSL bằng cách chuyển chứng chỉ máy chủ và / hoặc chứng chỉ máy khách. Trong giai đoạn bắt tay kết nối này, máy chủ Apache không có cách nào để biết yêu cầu sắp được đưa ra là để làm gì. Điều này khác với lưu lượng HTTP (không phải SSL) vì sau khi kết nối được thiết lập, máy chủ Apache có thể xác định cấu hình máy chủ ảo để sử dụng nếu máy khách gửi Hosttiêu đề hoặc nếu không nó sẽ chuyển sang máy chủ ảo đầu tiên được định cấu hình.

Nếu bạn có nhiều máy chủ ảo trong cùng một tên miền, bạn có thể thiết lập một chứng chỉ ký tự đại diện duy nhất trên địa chỉ IP và có nhiều máy chủ ảo với các tên máy chủ khác nhau được xác định; tuy nhiên, nếu những tên máy chủ đó không cùng tên miền, chúng sẽ tạo ra lỗi máy chủ. Điều này sẽ hoạt động vì chứng chỉ ký tự đại diện sẽ hợp lệ cho tất cả các tên máy chủ dưới tên miền đó. Bạn sẽ cần một địa chỉ IP khác nếu tên miền khác với chứng chỉ đầu tiên được xác định cho địa chỉ IP đó sẽ là địa chỉ được trình bày để kết nối máy khách.


1

Điều này có thể được thêm vào một chứng chỉ ssl duy nhất là SAN (Tên thay thế chủ đề). Trong sự phấn khích của tôi, tôi đã phải yêu cầu một chứng chỉ sll của tổ chức. tôi đã sử dụng globalalsign.


1

Trên thực tế, với phần mềm hiện đại, bạn CÓ THỂ phục vụ nhiều trang web HTTPS trên một địa chỉ IP duy nhất, bằng cách sử dụng một tính năng mới gọi là 'SNI - Chỉ định tên máy chủ'.

http://en.wikipedia.org/wiki/Server_Name_Inication

http://wiki.apache.org/httpd/NameBasingSSLVhostsWithSNI

Tôi vẫn chưa sử dụng cái này cho mình, nhưng nó có vẻ tốt cho các trang web nội bộ và mạng nội bộ. Hầu hết các trình duyệt hiện đại đều hỗ trợ SNI. IE6 không hỗ trợ SNI, nhưng IE7 thì có.

(Sửa: 20100426 - SNI hoàn toàn không được hỗ trợ trên Windows XP. Windows Vista trở lên không hỗ trợ SNI. Xem "Mục 2.2.3" tại http://msdn.microsoft.com/en-us/l Library / dd208005% 28v = PROT.13% 29.aspx # id8 ).


2
Với IE, hỗ trợ không đến từ phiên bản IE, mà đến từ phiên bản HĐH cơ bản. Vista trở lên hỗ trợ SNI. XP không có, vì vậy ngay cả với IE8 trên XP, bạn sẽ không nhận được SNI.
Nasko

1

Tôi đang làm việc về cùng một vấn đề. Như thử nghiệm của tôi, IE7 trở lên (Chỉ có trong Win7 & Vista) / Chrome / Firefox / Safari / Opera hỗ trợ "Chỉ định tên máy chủ". Trên thực tế, nếu trình duyệt sử dụng Tsl 1.0, nó hỗ trợ "Chỉ định tên máy chủ".


0

Tôi nghĩ rằng OP đang hỏi chuyện gì sẽ xảy ra nếu anh ta thêm chứng chỉ SSL vào một IP có nhiều máy chủ ảo. Nếu không có một máy chủ ảo nào khác sử dụng chứng chỉ SSL thì anh ta sẽ rõ ràng.


tôi cũng bối rối trước câu hỏi Tiêu đề của Q nói màu đen nội dung nói màu trắng.
Iraklis

đây là cái màu trắng
Iraklis


0

Nếu bạn sẽ cố gắng thêm hai chứng chỉ trên cùng một IP, chỉ có chứng chỉ đọc đầu tiên sẽ được sử dụng ở mọi nơi. Một IP - một chứng chỉ SSL.

Nếu bạn muốn nhận thêm chứng chỉ SSL trên cùng một IP, hãy xem xét nhận nhiều tên miền (còn gọi là UCC - kiểm tra chứng chỉ @ godaddy ) hoặc chứng chỉ ký tự đại diện (đắt hơn).


Bạn có nghĩa là chứng chỉ được thêm lần đầu tiên trong Apache conf sẽ được sử dụng cho cả hai?
nitin

1
Nếu bạn có hai chứng chỉ - cho trang A và B, và apache tải cấu hình cho các máy chủ theo trình tự A.conf, sau đó là B.conf, thì nó sẽ sử dụng chứng chỉ từ A.conf. Hoặc ngược lại.
Andrejs Cainikovs
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.