Назад | Перейти на главную страницу

Можно ли получить сертификат подстановки и использовать SNI?

Я хотел бы упростить настройку новых поддоменов (по крайней мере, для стороны разработки) и получить один сертификат с подстановочными знаками, настроить dns с подстановочными знаками (что сделано и отлично работает) и настроить SNI (указание имени сервера), похоже, это будет работать для нашего тестирования HTTPS, но погуглил, я не нашел никаких хороших инструкций. Это вообще возможно? Все, что я читал о SNI, говорит, что вам нужно настроить сертификат для каждого сайта, и что SNI просто позволяет доставлять разные сертификаты в зависимости от имени хоста.

Если у вас есть подстановочный сертификат, вы можете использовать именованный виртуальный хостинг так же, как и без SSL.

При согласовании SSL-соединения ваш веб-сервер должен выбрать сертификат ДО того, как будут получены заголовки протокола http, что означает, что без SNI Apache не может выбирать между несколькими виртуальными хостами на основе имен. Вот почему в прошлом вам требовался отдельный IP-адрес для каждого виртуального хоста, размещенного в вашей системе. Используя SNI, клиент может предоставить серверу имя хоста, к которому он хочет подключиться. Это позволяет серверу выбрать подходящую конфигурацию виртуального хоста и, следовательно, соответствующий сертификат.

Если вы используете подстановочный сертификат, вы обойдете эту проблему, если все ваши виртуальные хосты имеют общий родительский домен. В этом случае SNI не нужен. Поскольку сертификат действителен для любой ваших хостов не требуется, чтобы ваш веб-сервер мог идентифицировать соответствующий виртуальный хост в начале согласования SSL ... что означает, что вы можете использовать заголовки HTTP для идентификации хоста и продолжить обычную виртуальную машину на основе имени. хостинг.

При использовании Apache ваша конфигурация будет выглядеть примерно так:

NameVirtualHost *:443

<VirtualHost *:443>
    ServerName foo.example.com
    DocumentRoot /sites/foo.example.com/html
    SSLEngine On
    # ...other SSL parameters...
</VirtualHost>

<VirtualHost *:443>
    ServerName bar.example.com
    DocumentRoot /sites/bar.example.com/html
    SSLEngine On
    # ...other SSL parameters...
</VirtualHost>

Мы без проблем запускаем такую ​​конфигурацию в производственной среде уже несколько лет.