Я пытаюсь настроить Letsencrypt на сервере CentOS с несколькими виртуальными хостами. Кажется, это нормально работает на Ubuntu, и я понимаю, что скрипт, который выполняет эту работу, работает только для отдельных доменов в CentOS, но я решил, что могу вручную внести некоторые изменения. К сожалению, я могу получить только тот виртуальный хост, который сначала запускается на https, что больше похоже на проблему Apache, чем на проблему Letsencrypt, поскольку, если я изменю порядок, тот, который находится сверху, будет работать там, где прежде, чем я получу ошибку.
Вот как выглядит ssl.conf для виртуального хоста:
NameVirtualHost *:443
Listen 443
<VirtualHost *:443>
DocumentRoot "/var/www/html/domain1.com/laravel/public"
ServerName domain1.com:443
ServerAlias www.domain1.com:443
ErrorLog logs/domain1_ssl_error_log
TransferLog logs/domain1_ssl_access_log
LogLevel warn
Header set Access-Control-Allow-Origin "*"
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES
SSLCertificateFile /etc/letsencrypt/live/domain1.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/domain1.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/domain1.com/chain.pem
<Files ~ "\.(cgi|shtml|phtml|php3?)$">
SSLOptions +StdEnvVars
</Files>
<Directory "/var/www/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog logs/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
<VirtualHost *:443>
DocumentRoot "/var/www/html/domain2.com/laravel/public"
ServerName domain2.com:443
ServerAlias www.domain2.com:443
ErrorLog logs/domain1_ssl_error_log
TransferLog logs/domain1_ssl_access_log
LogLevel warn
Header set Access-Control-Allow-Origin "*"
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES
SSLCertificateFile /etc/letsencrypt/live/domain2.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/domain2.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/domain2.com/chain.pem
<Files ~ "\.(cgi|shtml|phtml|php3?)$">
SSLOptions +StdEnvVars
</Files>
<Directory "/var/www/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog logs/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
Я уже некоторое время использую Let's Encrypt и написал несколько как по его настройке и запуску (в частности, на CentOS 6 и CentOS 7 - но нет причин, по которым они не должны работать и на других платформах).
Я не добавляю: 443 в свой домен VirtualHost
конфиги. Что я делаю, я задокументировал в другом вопрос недавно - теперь я разбил свои конфигурации на несколько файлов (по одному для каждого домена вместо того, чтобы vhosts.conf
& ssl.conf
файлы).
У меня нет ссылок на SSL в моем базовом httpd.conf - убедитесь, что вы случайно что-то там не установили.
Как я уже писал в другом ответе, мои конфигурации для каждого домена выглядят так:
<VirtualHost *:80>
ServerName domain.tld
Redirect permanent / https://domain.tld/
</VirtualHost>
<VirtualHost *:443>
SSLCertificateFile /etc/letsencrypt/live/domain.tld/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/domain.tld/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/domain.tld/fullchain.pem
DocumentRoot /var/www/domain
ServerName domain.tld
ErrorLog logs/domain-error_log
CustomLog logs/domain-access_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
ServerAdmin user@domain.tld
SSLEngine on
<Files ~ "\.(cgi|shtml|phtml|php3?)$">
SSLOptions +StdEnvVars
</Files>
<Directory "/var/www/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
<Directory "/var/www/domain">
Options All +Indexes +FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
и мой ssl.conf
:
#SSL options for all sites
Listen 443
SSLPassPhraseDialog builtin
SSLSessionCache shmcb:/var/cache/mod_ssl/scache(512000)
SSLSessionCacheTimeout 300
Mutex sysvsem default
SSLRandomSeed startup file:/dev/urandom 1024
SSLRandomSeed connect builtin
SSLCryptoDevice builtin
SSLCompression off
SSLHonorCipherOrder on
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256