Có, nhưng có một số hãy cẩn thận.
Điều này được thực hiện thông qua Chỉ định tên máy chủ, một phần mở rộng cho Bảo mật lớp vận chuyển.
Tên máy chủ là gì?
Chỉ định tên máy chủ ( RFC 6066 ; RFC 4366 , RFC 3546 đã lỗi thời ) là một phần mở rộng cho Transport Layer Security cho phép khách hàng nói với máy chủ tên của máy chủ mà nó đang cố truy cập.
SNI tương thích với TLS 1.0 và cao hơn theo thông số kỹ thuật, nhưng việc triển khai có thể khác nhau (xem bên dưới). Không thể sử dụng nó với SSL, do đó, một kết nối phải thương lượng TLS (xem phụ lục E của RFC 4346 ) để SNI được sử dụng. Điều này thường xảy ra tự động với phần mềm được hỗ trợ.
Tại sao SNI cần thiết?
Trong kết nối HTTP bình thường , trình duyệt thông báo cho máy chủ tên máy chủ của máy chủ mà nó đang cố truy cập bằng Host:
tiêu đề. Điều này cho phép một máy chủ web trên một địa chỉ IP duy nhất để phục vụ nội dung cho nhiều tên máy chủ, thường được gọi là lưu trữ ảo dựa trên tên .
Cách khác là gán các địa chỉ IP duy nhất cho mỗi tên máy chủ web sẽ được phục vụ. Điều này thường được thực hiện trong những ngày đầu của web, trước khi mọi người biết rằng các địa chỉ IP sẽ hết và các biện pháp bảo tồn bắt đầu, và vẫn được thực hiện theo cách này cho các máy chủ ảo SSL (không sử dụng SNI).
Vì phương thức truyền tên máy chủ này yêu cầu kết nối đã được thiết lập, nên nó không hoạt động với các kết nối SSL / TLS. Vào thời điểm kết nối an toàn được thiết lập, máy chủ web phải biết tên máy chủ nào sẽ phục vụ cho máy khách, vì chính máy chủ web đang thiết lập kết nối an toàn.
SNI giải quyết vấn đề này bằng cách cho máy khách truyền tên máy chủ như một phần của đàm phán TLS, để máy chủ nhận thức được máy chủ ảo nào sẽ được sử dụng để phục vụ kết nối. Sau đó, máy chủ có thể sử dụng chứng chỉ và cấu hình cho máy chủ ảo chính xác.
Tại sao không sử dụng các địa chỉ IP khác nhau?
Host:
Tiêu đề HTTP được xác định để cho phép nhiều máy chủ Web được phục vụ từ một địa chỉ IP duy nhất do thiếu địa chỉ IPv4, được công nhận là sự cố sớm nhất là vào giữa những năm 1990. Trong môi trường lưu trữ web được chia sẻ, hàng trăm trang web độc đáo, không liên quan có thể được phục vụ bằng một địa chỉ IP duy nhất theo cách này, bảo tồn không gian địa chỉ.
Các môi trường lưu trữ được chia sẻ sau đó nhận thấy rằng người tiêu dùng không gian địa chỉ IP lớn nhất là nhu cầu các trang web bảo mật phải có địa chỉ IP duy nhất, tạo ra nhu cầu về SNI như một biện pháp ngăn chặn trên đường đến IPv6. Ngày nay, đôi khi rất khó để có được ít nhất 5 địa chỉ IP (/ 29) mà không có lý do chính đáng, thường dẫn đến sự chậm trễ triển khai.
Với sự ra đời của IPv6, các kỹ thuật bảo tồn địa chỉ như vậy không còn cần thiết nữa, vì một máy chủ duy nhất có thể có nhiều địa chỉ IPv6 được gán cho nó hơn toàn bộ Internet ngày nay, nhưng các kỹ thuật này có thể vẫn sẽ được sử dụng trong tương lai để phục vụ cho di sản IPv4 kết nối.
Hãy cẩn thận
Một số kết hợp hệ điều hành / trình duyệt không hỗ trợ SNI (xem bên dưới), vì vậy sử dụng SNI không phù hợp với mọi tình huống. Các trang web nhắm mục tiêu kết hợp hệ thống / trình duyệt như vậy sẽ phải từ bỏ SNI và tiếp tục sử dụng các địa chỉ IP duy nhất cho mỗi máy chủ ảo.
Đặc biệt lưu ý, không có phiên bản Internet Explorer nào trên Windows XP hỗ trợ SNI. Vì sự kết hợp này vẫn thể hiện một phần đáng kể (nhưng giảm dần, khoảng 16% lưu lượng truy cập Internet vào tháng 12 năm 2012 theo NetMarketShare) của lưu lượng truy cập Internet, SNI sẽ không phù hợp cho một trang web nhắm mục tiêu vào các nhóm người dùng này.
Ủng hộ
Nhiều, nhưng không phải tất cả, các gói phần mềm thường được sử dụng đều hỗ trợ SNI.
(Bỏ sót trong danh sách này không nhất thiết có nghĩa là thiếu hỗ trợ; điều đó có nghĩa là có giới hạn về số lượng tôi có thể nhập hoặc tôi không thể nhanh chóng tìm thấy thông tin trong tìm kiếm. Nếu gói phần mềm của bạn không được liệt kê, hãy tìm kiếm cho tên của nó cộng với sni
sẽ tiết lộ nếu có hỗ trợ và cách thiết lập nó.)
Hỗ trợ thư viện
Hầu hết các gói phụ thuộc vào thư viện bên ngoài để cung cấp hỗ trợ SSL / TLS.
- GNU TLS
- JSSE (Oracle Java) 7 trở lên, chỉ với tư cách là khách hàng
- libcurl 7.18.1 trở lên
- NSS 3.1.1 trở lên
- OpenSSL 0.9.8j trở lên
- OpenSSL 0.9.8f trở lên, có cờ cấu hình
- Qt 4,8 trở lên
Hỗ trợ máy chủ
Hầu hết các phiên bản hiện tại của phần mềm máy chủ phổ biến đều hỗ trợ SNI. Hướng dẫn thiết lập có sẵn cho hầu hết những điều này:
Hỗ trợ khách hàng
Hầu hết các trình duyệt web hiện tại và tác nhân người dùng dòng lệnh đều hỗ trợ SNI.
Máy tính để bàn
- Chrome 5 trở lên
- Chrome 6 trở lên trên Windows XP
- Firefox 2 trở lên
- Internet Explorer 7 trở lên, chạy trên Windows Vista / Server 2008 trở lên
- Internet Explorer trên Windows XP không hỗ trợ SNI bất kể phiên bản IE
- Konqueror 4.7 trở lên
- Opera 8 trở lên (có thể yêu cầu bật TLS 1.1 để hoạt động)
- Safari 3.0 trên Windows Vista / Server 2008 trở lên hoặc Mac OS X 10.5.6 trở lên
Điện thoại di động
- Trình duyệt Android trên 3.0 Honeycomb trở lên
- iOS Safari trên iOS 4 trở lên
- Windows Phone 7 trở lên
Dòng lệnh
- cURL 7.18.1 trở lên
- wget 1,14 trở lên (Bản phân phối có thể đã đưa ra một bản vá cho hỗ trợ SNI)
Không có hỗ trợ
- Trình duyệt BlackBerry
- Internet Explorer (mọi phiên bản) trên Windows XP
(Lưu ý: Một số thông tin cho câu trả lời này được lấy từ Wikipedia .)