Я использую стек Ubuntu 16 LAMP. В настоящее время у меня настроены файлы виртуальных хостов для каждого домена с облачным DNS, указывающим на один и тот же IP-адрес для 2 сайтов Wordpress.
Я использую cloudflare для создания бесплатного сертификата TLS, подписанного Cloudflare, для установки на сервере для каждого domain.
Файлы хоста выглядят так
domain1.conf
<VirtualHost *:443>
ServerAdmin webmaster@domain1.com
ServerName domain1.net
ServerAlias www.domain1.net
DocumentRoot /var/www/html/domain1
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/domain1.crt
SSLCertificateKeyFile /etc/ssl/private/domain1.key
</VirtualHost>
domain2.conf
<VirtualHost ip:443>
ServerAdmin webmaster@domain1.com
ServerName domain2.net
ServerAlias www.domain2.net
DocumentRoot /var/www/html/domain2
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/domain2.crt
SSLCertificateKeyFile /etc/ssl/private/domain2.key
</VirtualHost>
Мои файлы сертификатов и ключей не являются файлами .pem, имеет ли это значение?
Нужно ли мне редактировать мои порты. conf файл? Прочитав другое предложение, я добавил первые две строки.
NameVirtualHost *:80
NameVirtualHost *:443
Listen 80
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
Вы обсуждаете SSL (по умолчанию 443
), но в вашем примере вы используете 80
. Я полагаю, вам также необходимо перейти с http
на https
.
Я бы использовал разные файлы для разных доменов (следующая иерархия для Ubuntu, в RHEL / CentOS я использую ] vhosts.d
):
$ ls -1 sites-available/
domain1.net.conf
domain2.net.conf
Я использую нечто подобное следующему, чтобы перенаправить http
на https
.
<VirtualHost *:80>
ServerAdmin webmaster@domain1.net
ServerName domain1.net
RedirectMatch 301 ^(.*)$ https://domain1.net$1
</VirtualHost>
<VirtualHost *:443>
ServerAdmin webmaster@domain1.net
ServerAdmin office@domain1.net
ServerName domain1.net
ServerAlias *.domain1.net
ServerSignature Off
SSLEngine On
SSLCertificateFile /your/path/to/fullchain.pem
SSLCertificateKeyFile /your/path/to/privkey.pem
SSLCertificateChainFile /your/path/to/chain.pem
# LogLevel debug ssl:debug rewrite:trace8
# LogLevel info ssl:warn rewrite:trace8
LogLevel info
ErrorLog ${APACHE_LOG_DIR}/domain1.net.error.log
CustomLog ${APACHE_LOG_DIR}/domain1.net.access.log combined
</VirtualHost>
Да, вам нужен SSL. Если вы используете один и тот же сертификат для всех доменов, убедитесь, что у вас есть сертификат с использованием Альтернативное имя субъекта ^ 1 / SNI, как и для всех ваших доменов. Кроме того, это поле необходимо, если вы звоните в свою службу, используя IP-адрес вместо DN. В противном случае, если ваши вызовы используют DN, а не IP, вам не нужно указанное поле.
ОБНОВЛЕНИЕ: расширение файла не имеет значения. Содержание важно. Однако из соображений обслуживания рекомендуется придерживаться соглашения о расширении, основанного на содержимом файла. Подробнее о преобразовании сертификатов ^ 2
ОБНОВЛЕНИЕ: чтобы выбрать между SNI и SAN ^ 3 (также см. Комментарии @dave ), выберите, собираетесь ли вы использовать 1 сертификат или несколько сертификатов. Следствием этого является процесс обновления сертификатов. Если сертификаты поступают от разных клиентов, иногда это невозможно.
Мои файлы сертификатов и ключей не являются файлами .pem, имеет ли это значение?
Это зависит от того, что вы подразумеваете под файлами .pem . Если вы имеете в виду, что содержимое файла - это DER в кодировке Base-64, это имеет значение. Из документации mod_ssl
:
Эта директива указывает на файл с данными сертификата в формате PEM.
Если по .pem вы просто имеете в виду, что расширение не .pem
, в то время как содержимое представляет собой DER в кодировке Base-64, все будет в порядке - только Microsoft заботится о расширении файла.
Вы узнаете, если они в неправильном формате, так как Apache откажется запускаться.
Нужно ли мне редактировать мой файл ports.conf?
Если в вашем ports.conf
нет записи для порта 443, вы нужно будет добавить. В противном случае нет.