Что такое SNI и как это влияет на ваш сайт?
SNI (Server Name Indication) - это расширение SSL/TLS протокола, которое позволяет веб-браузерам отправлять имя сервера во время установки защищенного соединения с веб-сайтом. Это позволяет одному серверу хостинга обслуживать несколько доменных имен.
Поскольку большинство серверов используют один IP-адрес, которые обслуживает несколько сайтов, без SNI сервер не получает информации об имени запрашиваемого сайта при первоначальном запросе SSL. В этом случае серверу необходимо использовать по умолчанию SSL-сертификат, что может привести к ошибке сертификата, поскольку для запрашиваемого сайта может быть установлен другой SSL-сертификат.
Пример реализации SNI в PHP:
php
$context = stream_context_create([
'ssl' => [
'SNI_server_name' => 'example.com',
// Другие настройки SSL
]
]);
// Подключаемся к серверу с использованием SNI
$socket = stream_socket_client('ssl://127.0.0.1:443', $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $context);
В этом примере мы используем функцию stream_context_create для создания контекста потока с настройками SSL, включая имя сервера SNI. Затем мы используем stream_socket_client для создания защищенного соединения с сервером, указывая контекст потока.