Câu trả lời:
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.
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.
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 Host
tiê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.
Đ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.
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 ).
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.
Chứng chỉ UC chắc chắn là con đường để đi: http://www.sslshopper.com/unified-cransply-uc-ssl-certert.html
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).