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

Установите два SSL для разных поддоменов с одним и тем же корнем документа

У меня есть эти каталоги:

 /var/www/domain.com/web/domains/example.com
 /var/www/domain.com/web/domains/cdn.example.com
 /var/www/domain.com/web/domains/app.example.com

Это означает, что я не указываю каждый субдомен веб-сайта, а просто создаю субдомен в этом каталоге, и мой .htaccess позаботится об этом.

Сейчас я решаю эту проблему - у меня есть SSL-сертификат для домена app.example.com, но мне также нужно установить SSL для cdn.example.com, и я не знаю, как его настроить. Я попытался сгенерировать сертификат SSL для cdn.example.com, но я не смогу установить его для cdn.example.com ->, если я попробую это:

echo | openssl s_client -connect cdn.example.com:443 2>/dev/null

Я все еще вижу, что тема сертификата app.example.com вместо того cdn.example.com, поэтому я думаю, он все еще пытается получить плохой сертификат для этого домена.

Каталоги для SSL верны. Видишь ли ты провал в моем example.com.vhost файл?

<VirtualHost *:443>

        DocumentRoot /var/www/example.com/web

        ServerName app.example.com
        ServerAlias app.example.com

        <IfModule mod_ssl.c>
        SSLEngine on
        SSLProtocol All -SSLv2 -SSLv3
        SSLCertificateFile /var/www/clients/client1/web17/ssl/example.com.crt
        SSLCertificateKeyFile /var/www/clients/client1/web17/ssl/example.com.key
        </IfModule>

</VirtualHost>
<VirtualHost *:443>
        DocumentRoot /var/www/example.com/web

        ServerName cdn.example.com
        ServerAlias cdn.example.com

        <IfModule mod_ssl.c>
        SSLEngine on
        SSLProtocol All -SSLv2 -SSLv3
        SSLCertificateFile /var/www/clients/client1/web17/ssl/cdn/server.crt
        SSLCertificateKeyFile /var/www/clients/client1/web17/ssl/cdn/server.key
        </IfModule>

</VirtualHost>

Вы тестируете SSL без идентификатора servername. Чтобы иметь более одного SSL-сертификата на IP-адрес, вашим клиентам необходимо использовать SNI расширение.

Итак, чтобы протестировать OpenSSL, вам нужно установить -servername. Тогда ваша команда будет:

echo | openssl s_client -servername cdn.website.com -connect cdn.website.com:443

Под Apache 2.2. Вам нужна директива NameVirtualHost, чтобы указать разные виртуальные хосты с одним и тем же IP-адресом.

Похоже, что вам не хватает скопированной вами конфигурации:

NameVirtualHost *:443

Определите его только один раз, и Apache 2.2 будет знать, для какого виртуального хоста каждый запрос должен быть доставлен в соответствии с запрошенным заголовком Host.