Вопрос: Как применить один сертификат OpenSSL ко всем веб-сайтам, расположенным в каталоге html?
Проблема:При посещении https://localhost.site1.com
или https://localhost.site2.com
только index.html
при нахождении /var/www/html/index.html
отображается, поскольку default-ssl.conf
корневой файл документа находится в /var/www/html/
У меня есть 2 мультисайта WordPress (и другие сайты), расположенные в /var/www/html/
:
/var/www/html/site1.com
и
/var/www/html/site2.com
В моем случае default-ssl.conf
есть:
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin [email protected]
ServerName localhost
ServerAlias localhost
DocumentRoot /var/www/html/
ErrorLog ${APACHE_LOG_DIR}/localhost.error.log
CustomLog ${APACHE_LOG_DIR}/localhost.access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
#SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
# Similarly, one has to force some clients to use HTTP/1.0 to workaround
# their broken HTTP/1.1 implementation. Use variables "downgrade-1.0" and
# "force-response-1.0" for this.
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
</VirtualHost>
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
В моем /etc/hosts
досье есть:
127.0.1.1 excalibur
127.0.0.1 localhost
127.0.0.1 localhost.site1.com *.localhost.site1.com # mainsite url
127.0.0.1 subsite-a.localhost.site1.com
127.0.0.1 subsite-b.localhost.site1.com
127.0.0.1 subsite-c.localhost.site1.com
127.0.0.1 localhost.site2.com *.localhost.site2.com # mainsite url
Виртуальный хост для site1.com содержит:
<VirtualHost *:80>
ServerName localhost.site1.com
ServerAlias www.localhost.site1.com
# If this is the default configuration file we can use: 'ServerName localhost' or also 'ServerAlias localhost'.
ServerAdmin [email protected]
ErrorLog ${APACHE_LOG_DIR}/localhost.site1.com.error.log
CustomLog ${APACHE_LOG_DIR}/localhost.site1.com.access.log combined
DocumentRoot /var/www/html/site1.com
<Directory /var/www/html/site1.com>
Options None FollowSymLinks
# Enable .htaccess Overrides:
AllowOverride All
DirectoryIndex index.php
Order allow,deny
Allow from all
Require all granted
</Directory>
<Directory /var/www/html/site1.com/wp-content>
Options FollowSymLinks
Order allow,deny
Allow from all
</Directory>
SSLEngine on
SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
</VirtualHost>
А виртуальный хост для site2.com содержит:
<VirtualHost *:80>
ServerName localhost.site2.com
ServerAlias www.localhost.site2.com
# If this is the default configuration file we can use: 'ServerName localhost' or also 'ServerAlias localhost'.
ServerAdmin [email protected]
ErrorLog ${APACHE_LOG_DIR}/localhost.site2.com.error.log
CustomLog ${APACHE_LOG_DIR}/localhost.site2.com.access.log combined
DocumentRoot /var/www/html/site2.com
<Directory /var/www/html/site2.com>
Options None FollowSymLinks
# Enable .htaccess Overrides:
AllowOverride All
DirectoryIndex index.php
Order allow,deny
Allow from all
Require all granted
</Directory>
<Directory /var/www/html/site2.com/wp-content>
Options FollowSymLinks
Order allow,deny
Allow from all
</Directory>
SSLEngine on
SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
</VirtualHost>
Какие-нибудь советы?
решение1
Ваши виртуальные хосты прослушивают порт 80, в то время как HTTPS-соединение использует порт 443. Для этого вам предоставляется то, что есть в конфигурации SSL по умолчанию, поскольку это единственная конфигурация для порта 443.
Изменение VirtualHost
определений, <VirtualHost *:443>
вероятно, решит проблему.