答案 0 :(得分:3)
将http重定向到https的唯一安全方法是使用HSTS (Header Strict-Transport-Security)和preload选项。
apache重定向是不安全的,因为攻击者可以拦截它并重写它。不幸的是,对于较旧的浏览器和浏览器,如何不预装HSTS,这是您唯一的选择:
<VirtualHost *:80>
ServerName www.example.com
Redirect "/" "https://www.example.com/"
</VirtualHost>
在https回复中:
<VirtualHost *:443>
# Use HTTP Strict Transport Security to force client to use secure connections only
# Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Header always set Strict-Transport-Security "max-age=31536000"
# Further Configuration goes here
[...]
</VirtualHost>
或者,使用.htaccess:
# Redirect if http
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# set header if https
# Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS
Header set Strict-Transport-Security "max-age=31536000" env=HTTPS
标头严格传输安全(HSTS)有两种效果:
评论中的HSTS是最安全的,但无法回滚:
没有评论的HSTS安全性较低,因为第一个连接仍然不安全,并且不保护子域:
HSTS是针对SSLTrip的唯一可靠保护
SEO影响:如果网站已将所有http网页重定向到https,那么该标头没有负面影响(也没有正面影响)。
答案 1 :(得分:0)
在/etc/apache2/sites-available/yoursite.conf中添加文档根目录下方或上方
重定向永久/ https://your-site.com/