Перенаправить http на https
У меня есть небольшая проблема, которую я не могу решить. Я запускаю Apache на Ubuntu 16.04 и после установки сертификата Let's encrypt все работает, кроме этого...
Когда я набираю mydomain.com, он автоматически переходит на https://mydomain.com/ Когда я набираю www.mydomain.com, он автоматически переходит на https://mydomain.com/ Когда я набираю mydomain.com, он автоматически переходит на https://mydomain.com/ Когда я набираю http://mydomain.com/, он автоматически переходит на https://mydomain.com/ НО Когда я набираю http://www.mydomain.com/, он остается в небезопасном http://www.mydomain.com/...
Вот файлы конф...
nuc@nuc:~$ cat /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
ServerName mydomain.com
ServerAlias www.mydomain.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =mydomain.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
а также...
nuc@nuc:~$ cat /etc/apache2/sites-available/000-default-le-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName mydomain.com
ServerAlias www.mydomain.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/mydomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mydomain.com/privkey.pem
</VirtualHost>
</IfModule>
Любая помощь будет принята с благодарностью...:-)
1 ответ
Вместо использования mod_rewrite, как насчет просто использовать
Redirect / https://mydomain.com/
Полный подробный ответ о том, как действовать, так как у меня были некоторые проблемы, хотя это очень просто: как
только вы получили 3 сертификата (private.key, certificate.crt, ca_bundle.crt) от Let's encrypt или https://www.sslforfree.com/:
1 / загрузить их на удаленный сервер:
на удаленном сервере, к которому вы подключены (примечание: очевидно, вы можете выбрать другое имя или даже местоположение вместо "сертификатов", просто будьте последовательны после):
mkdir /etc/ssl/certificates
На вашем компьютере (при условии, что вы разархивировали 3 файла в папке sslforfree):
scp ~/Downloads/sslforfree/* ubuntu@{replace with you server adress, if aws you can use the elastic IP}:/etc/ssl/certificates
В качестве альтернативы вы можете использовать какое-нибудь программное обеспечение ftp, например filezilla, или использовать rsync. Я просто думаю, что scp myfiles [email protected]:/etc/ssl/ Certificates очень просто, если вы используете ubuntu на своем компьютере.
2 / Отредактируйте файлы конфигурации, расположенные в /etc/apache2/sites-available на вашем сервере
cd /etc/apache2/sites-available && chmod 777 *
затем используйте свой любимый редактор и замените в 000-default.conf:
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
с (при условии, что DNS вашего сайта - mysite.com):
ServerName http.mysite.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
Redirect permanent / https://mysite.com/
3 / Затем отредактируйте default-ssl.conf(бонус: 4-й элемент включит значок, расположенный в / var / www / html, что, очевидно, вам также понадобится, если вы столкнетесь с проблемами получения SSL, ctrl+ рубашка +R чтобы заставить кеш вашего браузера загружать его позже):
ServerAdmin webmaster@localhost
ServerName mysite.com
DocumentRoot /var/www/html
AddType image/x-icon .ico
и включите SSL, изменив путь для двух первых и удалив хэштег и изменив путь для третьего элемента:
SSLCertificateFile /etc/ssl/certificates/certificate.crt
SSLCertificateKeyFile /etc/ssl/certificates/private.key
# Server Certificate Chain:
# Point SSLCertificateChainFile at a file containing the
# concatenation of PEM encoded CA certificates which form the
# certificate chain for the server certificate. Alternatively
# the referenced file can be the same as SSLCertificateFile
# when the CA certificates are directly appended to the server
# certificate for convinience.
SSLCertificateChainFile /etc/ssl/certificates/ca_bundle.crt
4 / Включите модуль default-ssl.conf и, наконец, перезагрузите конфигурацию для сервера apache2:
sudo a2enmod ssl &&
sudo a2ensite default-ssl.conf &&
sudo systemctl reload apache2
Не забудьте сбросить разрешения по умолчанию: chmod 644 *
Теперь ваш сайт защищен постоянным перенаправлением на https!