![BKHOST](https://bkhost.vn/wp-content/uploads/2023/02/log0-bkhost.png)
- Tổng đài 24/7: 1800 646 881
- Đăng nhập
-
3
SNI là một thuật ngữ được sử dụng phổ biến trong lĩnh vực CNTT. Vậy cụ thể Server Name là gì? Có những thuật ngữ liên quan nào khác? Tất cả sẽ được cập nhật chi tiết trong nội dung bài viết được chia sẻ dưới đây. Hãy cùng BKHOST theo dõi.
SNI – Server Name Indication là một phần mở rộng của giao thức SSL hay còn gọi là TLS và được sử dụng phổ biến trong HTTPS. Nó giúp các thiết bị khách có thể nhận thấy chứng chỉ SSL chính xác cho Website trong suốt quá trình TLS/SSL Handshake. Ngoài ra, phần mở rộng còn cho phép người dùng có thể chỉ định tên máy chủ hoặc tên miền của Website trong quá trình TLS Handshake.
Giả sử SNI là một gói hàng được gửi đến một tòa nhà chung cư của khách hàng là Web Server. Cửa hàng bán gói hàng đó sẽ yêu cầu các yếu tố quan trọng như địa chỉ đường phố, số tầng và số nhà cụ thể để có thể gửi gói hàng đến đúng địa chỉ của khách hàng. Trong đó, Web Server là tòa nhà chung cư bao gồm tên miền và địa chỉ IP riêng tương đương với địa chỉ đường phố và tên tòa nhà.
Nếu một máy chủ lưu trữ nhiều trang web có các chứng chỉ SSL riêng và chỉ chia sẻ một địa chỉ IP duy nhất. Khi đó, máy chủ sẽ không thể phân biệt được chứng chỉ SSL nào sẽ hiển thị nếu có một thiết bị khách cố gắng kết nối với trang web. Nguyên nhân là do SSL/TLS Handshake xảy ra trước khi thiết bị khách cho biết qua HTTP Website mà nó đang kết nối.
SNI cho phép một thiết bị máy chủ có thể kết nối với nhiều chứng chỉ SSL khác nhau trong điều kiện sử dụng dùng một địa chỉ IP. Chẳng hạn như máy chủ A sử dụng SNI để kết nối an toàn với các liên kết có cùng địa chỉ IP như https://www.example.com và https://www.something.com.
SNI có khả năng ngăn chặn các lỗi không khớp tên khi máy khách truy cập đúng với địa chỉ của Website nhưng tên chứng chỉ SSL khác với tên của Website đó. Thông thường loại lỗi này sẽ thông báo về trình duyệt của người dùng với dòng trạng thái là “Your connection is not private“.
Năm 2003, SNI đã được các chuyên gia bổ sung vào giống như một phần mở rộng cho giao thức TLS/SSL. Do đó, nó xuất hiện trên hầu hết các trình duyệt, hệ điều hành và Web Server. Tuy nhiên, đối với một số trình duyệt và các hệ điều hành đời cũ vẫn đang được sử dụng không có khả năng hỗ trợ SNI.
Về cơ bản, Server Name Indication được hiểu đơn giản đó là chỉ ra tên máy chủ của Website hay tên miền bất kỳ. Trong đó, các tên này có thể tách biệt với Web Server lưu trữ miền. Đối với trường hợp một máy chủ lưu trữ nhiều tên miền khác nhau thì đó được gọi là Virtual Hostname.
Server Name là tên của một thiết bị máy tính nhưng với Web Server thì nó sẽ không hiển thị cho người dùng cuối. Nếu như có hiển thị thì đó là khi máy chủ chỉ lưu trữ một miền và Name Server tương ứng duy nhất.
Thông thường, Web Server bao gồm nhiều Name Server hoặc tên miền mà người dùng có thể đọc. Nếu như Website sử dụng HTTPS thì mỗi Name Server sẽ sở hữu một chứng chỉ SSL riêng.
Hầu hết các Name Server đều có cùng địa chỉ IP và nằm trên một máy chủ. Nguyên nhân là vì ngay sau khi kết nối TCP được kích hoạt thì máy khách sẽ ngay lập tức cho biết Website nào đang có người dùng cố gắng truy cập trong một yêu cầu HTTP.
Tuy nhiên, trong HTTPS thì quá trình TLS Handshake lại xảy ra trước khi HTTP bắt đầu. Vì thế nếu như không có SNI thì máy khách sẽ không thể cho máy chủ biết Name Server cụ thể là gì. Nếu như tên trên chứng chỉ SSL khác với tên mà máy khách đang truy cập thì trình duyệt sẽ trả về lỗi và ngắt kết nối.
SNI sẽ bổ sung tên miền vào quá trình TLS Handshake. Điều này giúp cho quá trình TLS có thể đến đúng với tên miền và nhận chứng chỉ SSL một cách chính xác, đồng thời đảm bảo cho quá trình TLS Handshake có thể hoạt động bình thường.
Hostname là tên của một thiết bị kết nối với mạng, chẳng hạn như tên miền trang web hay tên Website. Chúng có đặc điểm chung đó là đều tách biệt với địa chỉ IP được liên kết với tên miền.
Virtual Hostname là tên của một thiết bị máy chủ ảo không có địa chỉ IP riêng và được lưu trữ trên máy chủ có Name Server khác. Đây là một thiết bị ảo bởi nó không có máy chủ vật lý mà chỉ có thể tồn tại dưới dạng kỹ thuật số.
Encrypted SNI là phương pháp mã hóa phần SNI của Client Hello để bổ sung vào phần tiện ích mở rộng SNI. Điều này giúp ngăn chặn không cho người dùng trái phép xem chứng chỉ máy khách yêu cầu đem đến hiệu quả bảo mật tốt hơn. Cloudflare và Mozilla Firefox đã ra mắt hỗ trợ cho ESNI vào năm 2018.
Nếu như trình duyệt của người dùng không hỗ trợ SNI thì họ sẽ không thể truy cập vào một số Website nhất định. Với các trình duyệt không hỗ trợ này, nó sẽ trả về cho người dùng một thông báo lỗi dưới dạng “Your connection is not private.”
Hiện nay, hầu hết các trình duyệt và hệ điều hành đều hỗ trợ SNI. Tuy nhiên, đối với một số phiên bản cũ của Internet Explorer, hệ điều hành BlackBerry hay các phiên bản phần mềm lỗi thời không có khả năng hỗ trợ SNI.
Như vậy, bài viết trên là những thông tin về SNI. Hy vọng qua đây các lập trình viên và người dùng nắm được thêm các thông tin hữu ích về loại công cụ hỗ trợ này.
Nếu còn gặp bất cứ vướng mắc gì về SNI, hãy để lại ở bên bình luận bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.
P/s: Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.
Mua Hosting tại BKHOST
Khuyến mãi giảm giá cực sâu, chỉ từ 5k/tháng. Đăng ký ngay hôm nay: