将HTTP请求重定向到HTTPS

时间:2016-05-03 11:13:58

标签: apache .htaccess http ssl https

我对如何将所有http网页重定向到https有疑问。

我已经看到有人告诉我要像reply那样进行重写:

Apache说要在this way

中做

任何人都可以向我解释进行此更改的推荐方法

2 个答案:

答案 0 :(得分:3)

将http重定向到https的唯一安全方法是使用HSTS (Header Strict-Transport-Security)和preload选项。

apache重定向是不安全的,因为攻击者可以拦截它并重写它。不幸的是,对于较旧的浏览器和浏览器,如何不预装HSTS,这是您唯一的选择:

<VirtualHost *:80>
      ServerName www.example.com
      Redirect "/" "https://www.example.com/"
</VirtualHost>

Apache redirect

在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>

HSTS

或者,使用.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)有两种效果:

  • 对于访问者,它告诉浏览器仅在该域和所有子域上使用https一年(所有http请求将重写为https请求而无需网络交互)
  • 对于浏览器供应商,'preload'关键字允许他们在源代码中预加载网站。这样,您就可以避免第一个不安全的请求:浏览器已经知道该网站提交了https。 请注意,HSTS +预加载无法回滚,这是对安全性的明确提交(但它的优势在于:攻击者也无法将其删除)

评论中的HSTS是最安全的,但无法回滚:

  • Strict-Transport-Security“max-age = 31536000; includeSubDomains; preload”

没有评论的HSTS安全性较低,因为第一个连接仍然不安全,并且不保护子域:

  • Strict-Transport-Security“max-age = 31536000”

HSTS是针对SSLTrip的唯一可靠保护

SEO影响:如果网站已将所有http网页重定向到https,那么该标头没有负面影响(也没有正面影响)。

答案 1 :(得分:0)

在/etc/apache2/sites-available/yoursite.conf中添加文档根目录下方或上方

重定向永久/ https://your-site.com/