Два домена, два сертификата SSL, один IP

Я пытаюсь выполнить два домена, один с Wildcard-сертификатом и другим с обычным сертификатом от одного IP и одного nginx.

Установка: example1.com с Wildcard-сертификатом example2.com с обычным сертификатом

Моя текущая конфигурация nginx для моей подстановочной установки похожа на это (я еще не запустил с добавления второго домена):

/etc/nginx/sites-available/example1.com:

server {
    listen  443 default_server ssl;
    server_name         _;

    ssl_certificate     /etc/nginx/ssl/example1.com/example1.com.crt;
    ssl_certificate_key /etc/nginx/ssl/example1.com/example1.com.key;

    ssl_session_cache    shared:SSL:10m;
    ssl_session_timeout  10m;

    # Perfect Forward Security
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS +RC4 RC4";
}

server {
    listen      443;
    server_name example1.com;

    error_log   /var/log/nginx/example1.com.error.ssl.log;
    access_log  /var/log/nginx/example1.com.access.ssl.log;

    root /var/www/example1.com/;
    index index.html;
}

server {
    listen      80;
    server_name example1.com;
    rewrite     ^   https://$server_name$request_uri? permanent;
}

Теперь у меня также есть некоторые субдомены, вот почему я использую Wildcard-сертификат. Конфигурации субдомена просто похожи на это:

/etc/nginx/sites-available/sub1.example1.com

server {
    listen      443;
    server_name sub1.example1.com;

    error_log   /var/log/nginx/sub1.example1.com.error.ssl.log;
    access_log  /var/log/nginx/sub1.example1.com.access.ssl.log;

    root /var/www/sub1.example1.com/;

    location / {
        # nothing
    }
}

server {
    listen      80;
    server_name sub1.example1.com;
    rewrite     ^   https://$server_name$request_uri? permanent;
}

Эта установка крута, потому что все субдомены наследовали ssl настройки от example.com сконфигурируйтесь, потому что это default_server.

Что лучший способ добавить второй домен теперь? Если я просто добавлю домен тем же путем, то я, очевидно, получу ошибку на запуске, потому что существует дубликат default_server запись. Если я удаляю default_server запись от example2.comконфигурация это отступит к конфигурации ssl от example1.com.

Что я хочу, но не знаю, как достигнуть:

Имейте одну "основную" конфигурацию для каждого домена, давайте назовем его example1.com-default и example2.com-default.

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

Так sub1.example1.com наследовал бы настройки SSL от example1.com-default и sub1.example2.com наследовал бы настройки SSL от example2.com-default.

Действительно ли это возможно, и если бы это - как я достиг бы этого?

Заранее спасибо!

6
задан 14 June 2014 в 22:54
2 ответа

Если вы имеете в виду другие настройки SSL, а не сертификат/ключ, то я бы посоветовал вам перенести их конфигурацию на уровень http в конфигурации nginx.

Таким образом, настройки будут наследованы каждому серверу блоку.

Например, в Debian и производных вы можете создать /etc/nginx/conf.d/ssl. conf, куда вы помещаете эти строки:

ssl_session_cache    shared:SSL:10m;
ssl_session_timeout  10m;

# Perfect Forward Security
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS +RC4 RC4";

Файлы внутри conf.d включены в уровень http.

подход default_server здесь не работает.

После этого блоки сервера будут выглядеть следующим образом:

server {
    listen 443 default_server ssl;
    server_name _;

    ssl_certificate /path/to/certificate;
    ssl_certificate_key /path/to/key;
}

И, если вы захотите переопределить некоторые настройки для некоторых доменов, то вы можете повторно ввести директивы на уровне сервера .

.
4
ответ дан 3 December 2019 в 00:38

Sa a se ki te koze pa konpòtman pwotokòl SSL. Koneksyon SSL la etabli anvan navigatè a voye yon demann HTTP epi nginx pa konnen non sèvè yo mande a. Se poutèt sa, li ka sèlman ofri sètifika sèvè default la.

Ou ka li atik sa a, nan fen a ou gen plizyè opsyon, lè l sèvi avèk plizyè domèn nan yon sèl sèvè, anpil IP kòm Sètifika oswa SNI (Server_Name_Indication):

konfigirasyon Https Serveurs, NGINX DOC

-1
ответ дан 3 December 2019 в 00:38

Теги

Похожие вопросы