Итак, вот моя текущая конфигурация:
<VirtualHost *:443>
DocumentRoot "/var/www/keypad"
ServerName keypad.io
SSLOptions +StrictRequire
<Directory />
SSLRequireSSL
</Directory>
SSLProtocol -all +TLSv1
SSLEngine on
SSLCertificateFile /cert/cert.crt
SSLCertificateKeyFile /cert/key.key
SSLCACertificateFile /cert/inter.crt
</VirtualHost>
<VirtualHost *:80>
ServerName keypad.io
ServerAlias www.keypad.io
DocumentRoot /var/www/keypad
Redirect permanent / https://keypad.io/
</VirtualHost>
В результате можно получить доступ к сайту как по http: //, так и по https: //
По какой-то причине я получаю бесконечный цикл перенаправления с https: // в адресной строке.
Если я полностью удалю хост *: 80, http: // перестает работать, а https: // игнорирует DocumentRoot
свойство и дает мне страницу приветствия apache. Независимо от того, что я делаю в блоке хоста *: 443, я получаю зашифрованное соединение со страницей приветствия.
Я хочу, чтобы ОБА http: // и https: // направляли клиента на зашифрованную SSL версию моего сайта. Мой apache2.conf по умолчанию. Я ничего с этим не сделал.
Выход apache -version
Server version: Apache/2.4.7 (Ubuntu)
Server built: Jul 22 2014 14:36:38
Есть предположения?
РЕДАКТИРОВАТЬ: я добавил дополнительный '/' (и удалил SSLv3, как было предложено), и у меня все еще есть бесконечный цикл перенаправления. Любая помощь определенно приветствуется.
В вашем Redirect
директива:
<VirtualHost *:443>
DocumentRoot "/var/www/keypad"
ServerName keypad.io
SSLOptions +StrictRequire
<Directory />
SSLRequireSSL
</Directory>
SSLProtocol -all +TLSv1 +SSLv3
SSLEngine on
SSLCertificateFile /cert/cert.crt
SSLCertificateKeyFile /cert/key.key
SSLCACertificateFile /cert/inter.crt
</VirtualHost>
<VirtualHost *:80>
ServerName keypad.io
ServerAlias www.keypad.io
DocumentRoot /var/www/keypad
Redirect permanent / https://keypad.io/
</VirtualHost>
Без запроса косой черты:
curl -v http://keypad.io/bla
Перенаправит вас на https://keypad.iobla
расположение.