Может ли кто-нибудь объяснить мне разницу между этими сертификатами в упрощенном виде? Я прочитал несколько статей, но похоже, что они выполняют одну и ту же работу, а именно шифруют многие домены одним сертификатом.
Может ли кто-нибудь объяснить мне разницу между этими сертификатами в упрощенном виде? Я прочитал несколько статей, но похоже, что они выполняют одну и ту же работу, а именно шифруют многие домены одним сертификатом.
Ответы:
SAN (Subject Alternative Name) является частью спецификации сертификата X509 , где у сертификата есть поле со списком альтернативных имен, которые также действительны для субъекта (в дополнение к одному Common Name / CN). Это поле и подстановочные имена - это, по сути, два способа использования одного сертификата для нескольких имен.
SNI (индикация имени сервера) - это расширение протокола TLS, которое является своего рода аналогом протокола TLS заголовка узла HTTP. Когда клиент отправляет это, он позволяет серверу выбрать правильный сертификат для представления клиенту без ограничения использования отдельных IP-адресов на стороне сервера (очень похоже на то, как заголовок узла HTTP интенсивно используется для простого HTTP).
Обратите внимание, что SNI - это не то, что отражено в сертификате, и он фактически является своего рода противоположностью того, о чем просит вопрос; это упрощает наличие множества сертификатов, а не использование одного сертификата для многих вещей.
С другой стороны, это сильно зависит от ситуации, какой путь на самом деле предпочтительнее. В качестве примера, вопрос, который запрашивается, почти наверняка не тот, который вы на самом деле хотите, если вам нужны сертификаты для различных объектов.
SAN расшифровывается как Subject Alternative Name , и это свойство сертификата x509, а SNI - это функция, которую может поддерживать клиент SSL / TLS, таким образом, это совершенно другой объект.
Используя сертификат с SAN, вы можете разместить несколько сайтов с поддержкой HTTPS на одном IP-адресе, даже если клиент не поддерживает SNI . В этом случае у вас есть один сертификат для всех ваших сайтов, и этот сертификат должен содержать все имена сайтов ( ServerName
или их ServerAlias
в координатах apache или server_name
в nginx) в качестве его SAN . Это подмножество устаревшего подхода, который расширил «один сайт с поддержкой HTTPS на каждый отдельный IP-адрес». В настоящее время только большие CDN придерживаются SAN .
Используя SNI, вы также можете разместить несколько сайтов с поддержкой HTTPS на одном IP-адресе, у вас есть отдельный сертификат x509 для каждого сайта, и ни в одном из них не упоминаются другие имена сайтов в их свойстве SAN , кроме клиентов TLS (т. Е. Браузеров и консольных клиентов, таких как wget
или curl
). должен поддерживать SNI . Это современный подход, поскольку последней операционной системой, не поддерживающей SNI , была Windows XP с IE 6.x, если я правильно помню. В настоящее время вы можете увидеть SAN имущество , если вы покупаете подстановочный сертификат - например , такой сертификат *.foobar.com
будет содержать общее имя из *.foobar.com
и SAN из foobar.com
.
Это смешивает две части процесса сертификации.
SAN - это альтернативное имя субъекта. Это способ создать один сертификат для нескольких доменов. Вы просто добавляете другие домены, для которых вы хотите получить сертификат, в поле SAN сертификата. Браузер примет действительность и на этих доменах.
SNI - это указатель имени сервера и является частью SSL. Это позволяет размещать несколько сайтов SSL на одном IP-адресе, поскольку желаемое имя сервера отправляется с рукопожатием SSL, и сервер может выбрать правильный сертификат для ответа.
Вот (возможно) более понятный для человека ответ:
SNI проводится на стороне клиента и сообщает стеку TLS: «Я хочу поговорить с сервером, имя которого - [Сервер X]». Сервер видит эту строку [Server X] и отвечает соответствующим сертификатом. Один практический пример - когда один сервер должен обслуживать трафик для нескольких доменов. Также полезно, если клиент использовал IP (чтобы избежать задержек поиска DNS), но сертификат CN не упоминает IP.
SAN - это список «Также известен как» в сертификатах. Таким образом, сервер может использовать один сертификат для многих имен. Можно добавить несколько доменов к одному сертификату и даже список IP-адресов.
Как видите, все пересекается. Выбор между одним или обоими зависит от того, где человек контролирует. Некоторые клиенты могут не распознавать имена в SAN, и единственный способ адресации заключается в предоставлении соответствующего сертификата на основе SNI. Существуют сценарии, когда сервер предоставляет API для одного сертификата или клиент не отправляет SNI. Для этих случаев SAN является единственным выходом.
Моя компания использует оба. Они обеспечивают гибкость и облегчают обратную и прямую совместимость.