Я только что приобрел сертификат SSL у Иди, папа. Я устанавливаю сертификат:
www.mydomainname.com (я сменил домен, как вы понимаете.)
Я настраиваю Apache, и он работает. Итак, когда я печатаю https://www.mydomainname.com
все работает.
ТЕМ НЕ МЕНИЕ:
Когда я печатаю http://www.mydomainname.com
Я получаю эту ошибку от Apache:
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.
Я надеялся, что смогу напечатать
http://www.mydomainname.com
для HTTP-запросов
и
https://www.mydomainname.com
когда мне нужны безопасные запросы.
Что я сделал не так?
Вот моя конфигурация Apache:
Под сайтами с поддержкой (я использую установку Ubuntu Apache)
У меня есть файл под названием ssl
<IfModule mod_ssl.c>;
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/www.mydomainname.com.crt
SSLCertificateKeyFile /etc/apache2/ssl/www.mydomainname.com.key
</IfModule>
а другой позвонил webapp
:
<IfModule mod_proxy_ajp.c>
ProxyRequests On
ProxyVia On
<Location />
Order allow,deny
Allow from all
AuthType Basic
AuthName "Restricted area"
AuthUserFile /etc/apache2/passwd/access
Require valid-user
ProxyPass ajp://localhost:9999/
ProxyPassReverse ajp://localhost:9999/
</Location>
<Location /uploader>
Order allow,deny
Satisfy Any
Allow from all
ProxyPass ajp://localhost:9999/uploader
ProxyPassReverse ajp://localhost:9999/uploader
</Location>
</IfModule>
Проверьте конфигурацию Apache, чтобы убедиться, что вы слушаете порт 80 для HTTP и порт 443 для HTTPS.
В твоем /etc/httpd/conf/httpd.conf
, у вас должен быть "Слушай 80". Вы также должны иметь /etc/httpd/conf.d/ssl.conf
файл (возможно) с указанием "Listen 443".
Вам необходимо настроить виртуальные хосты, один для *: 80 и один для *: 443. В *: 443 должна быть спецификация SSL, в *: 80 не должно быть материалов SSL.
Вы купили не тот сертификат SSL.
Хорошо, я исправил. Я запутался с тем, что не имел Virtualhost
ранее. Это конечная конфигурация:
Конфигурация ssl:
<VirtualHost *:443>
DocumentRoot /var/www/
<IfModule mod_proxy_ajp.c>
ProxyRequests On
ProxyVia On
<Location />
Order allow,deny
Allow from all
AuthType Basic
AuthName "Restricted area"
AuthUserFile /etc/apache2/passwd/site-access
Require valid-user
ProxyPass ajp://localhost:9999/
ProxyPassReverse ajp://localhost:9999/
</Location>
<Location /uploader>
Order allow,deny
Satisfy Any
Allow from all
ProxyPass ajp://localhost:9999/uploader
ProxyPassReverse ajp://localhost:9999/uploader
</Location>
</IfModule>
<IfModule mod_ssl.c>
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/www.mydomain.com.crt
SSLCertificateKeyFile /etc/apache2/ssl/www.mydomain.com.key
</IfModule>
</VirtualHost>
Конфигурация Webapp:
<VirtualHost *:80>
DocumentRoot /var/www/
<IfModule mod_proxy_ajp.c>
ProxyRequests On
ProxyVia On
<Location />
Order allow,deny
Allow from all
AuthType Basic
AuthName "Restricted area"
AuthUserFile /etc/apache2/passwd/site-access
Require valid-user
ProxyPass ajp://localhost:9999/
ProxyPassReverse ajp://localhost:9999/
</Location>
<Location /uploader>
Order allow,deny
Satisfy Any
Allow from all
ProxyPass ajp://localhost:9999/uploader
ProxyPassReverse ajp://localhost:9999/uploader
</Location>
</IfModule>
</VirtualHost>
На самом деле вам нужно настроить 2 VHosts, SSL VHost и VHost без SSL отличаются только частью SSL, которую вы фактически размещаете в VHost, поскольку у вас может быть множество SSL VHosts (прослушивание на разных портах), которое на самом деле не делает смысл предоставить это в контексте всего сервера, что, я думаю, именно то, что вы делаете.
Если вы ДЕЙСТВИТЕЛЬНО купили не тот сертификат, и это не просто проблема конфигурации, тогда лучший план - отменить / отозвать сертификат и повторно выпустить его.
У большинства центров сертификации есть политика, согласно которой они будут делать это бесплатно в течение определенного периода времени (например, 1 неделю).
Надеюсь это поможет.