Я установил сертификат SSL на свой экземпляр Ubuntu EC2, и мне нужно, чтобы один из веб-сайтов, размещенных на этом экземпляре, был доступен через https.
У меня есть несколько веб-сайтов, размещенных на одном IP через виртуальные хосты. Однако мне нужен только один веб-сайт, который будет доступен по https.
Я уверен в следующем:
Я уверен в этом, потому что, когда я попробовал следующую конфигурацию виртуального хоста в / etc / apache2 / sites-enabled / mysslsite, я смог получить доступ к сайту через https. Проблема заключалась в том, что все остальные веб-сайты вышли из строя, потому что к ним также требовался доступ ТОЛЬКО через https. Ниже приведен файл конфигурации виртуального хоста:
<VirtualHost *>
ServerAdmin support@example.com
DocumentRoot /var/www/mysslwebsite
ServerName www.mysslwebsite.com
ServerAlias mysslwebsite.com
<Directory /var/www/mysslwebsite>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all
</Directory>
<Directory />
Options FollowSymLinks
AllowOverride all
</Directory>
SSLEngine on
SSLCertificateFile /etc/ssl/apache2/mycertificate.com.crt
SSLCertificateKeyFile /etc/ssl/apache2/mycertificate.key
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined
ServerSignature On
</VirtualHost>
В этой конфигурации, хотя она и находится в этой конкретной конфигурации виртуального хоста mysslwebsite, все остальные веб-сайты не будут загружаться через стандартный http и отображать следующее сообщение при доступе через http:
Bad Request
Your browser sent a request that this server could not understand.
Reason: You're speaking plain HTTP to an SSL-enabled server port.
Instead use the HTTPS scheme to access this URL, please.
Hint: https://www.myothersite.com/
Кто-нибудь знает, как я могу это исправить?
Спасибо
-------РЕДАКТИРОВАТЬ-------
Я пробовал следующие виртуальные хосты:
NameVirtualHost *:80
NameVirtualHost *:443
<VirtualHost *:80>
ServerAdmin support@email.com
DocumentRoot /var/www/mysslsite
ServerName www.mysslsiste.com
ServerAlias mysslsite.com
<Directory /var/www/mysslsite>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all
</Directory>
<Directory />
Options FollowSymLinks
AllowOverride all
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined
ServerSignature On
</VirtualHost>
<VirtualHost *:443>
ServerAdmin support@email.com
DocumentRoot /var/www/mysslsist
ServerName www.mysslsist.com
ServerAlias mysslsist.com
<Directory /var/www/mysslsist>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all
</Directory>
<Directory />
Options FollowSymLinks
AllowOverride all
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined
ServerSignature On
SSLEngine on
SSLCertificateFile /etc/ssl/apache2/certificate.com.crt
SSLCertificateKeyFile /etc/ssl/apache2/certificate.key
</VirtualHost>
#Another virtual host with another site
<VirtualHost *>
ServerAdmin support@email.com
DocumentRoot /var/www/myothersite
ServerName www.myothersite.com
ServerAlias myothersite.com
<Directory /var/www/myothersite>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all
</Directory>
<Directory />
Options FollowSymLinks
AllowOverride all
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined
ServerSignature On
</VirtualHost>
Однако мне не удалось получить доступ к сайту через SSL. Хотя я мог получить к нему доступ через http.
При перезапуске Apache выдавал следующие предупреждения:
NameVirtualHost *: 443 не имеет VirtualHosts NameVirtualHost *: 80 не имеет VirtualHosts
Это сбивает с толку, поскольку порт 80 имеет около 10 виртуальных хостов.
Мне кажется, что вы не указываете порт 443 или 80 для виртуального хоста. Итак, все идет к виртуальному хосту, который настроен для SSL. Таким образом, HTTP-трафик не принимается, поскольку он настроен только на прием SSL. Попробуй это
NameVirtualHost *:80
<VirtualHost *:80>
ServerName blah
DocumentRoot /var/www/html/
</VirtualHost>
<VirtualHost *:443>
...
- your config here -
...
</VirtualHost>
Вы даже можете сделать перенаправление для виртуального хоста, работающего на порту 80. Может быть, что-то вроде этого:
Redirect permanent / https://<URL>