将http重定向到https是否不好?

Jas*_*vis 255 ssl http https apache-2.2

我刚刚在我的服务器上安装了 SSL 证书。

然后它在端口 80 上为我的域上的所有流量设置重定向,以将其重定向到端口 443。

换句话说,我所有的http://example.com流量现在都被重定向到https://example.com页面的适当版本。

重定向是在我的 Apache Virtual Hosts 文件中完成的,内容如下...

RewriteEngine on
ReWriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L] 
Run Code Online (Sandbox Code Playgroud)

我的问题是,使用 SSL 有什么缺点吗?

由于这不是 301 重定向,我是否会因为切换到而失去搜索引擎中的链接汁/排名https

我很感激你的帮助。一直想在服务器上设置SSL,只是为了实践一下,今晚终于决定做了。到目前为止,它似乎运行良好,但我不确定在每个页面上都使用它是否是个好主意。我的网站不是电子商务网站,也不处理敏感数据;它主要是为了外观和安装它进行学习的快感。


更新的问题

奇怪的是,Bing 从我的网站创建了这个屏幕截图,因为它在任何地方都使用 HTTPS...

在此处输入图片说明

Mar*_*son 321

[R]对自己的标志是一个302重定向(Moved Temporarily)。如果您真的希望人们使用您网站的 HTTPS 版本(提示:您这样做),那么您应该使用[R=301]永久重定向:

RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R=301,L] 
Run Code Online (Sandbox Code Playgroud)

A301保持您所有的 google-fu 和来之不易的 pageranks完好无损。确保mod_rewrite已启用:

a2enmod rewrite
Run Code Online (Sandbox Code Playgroud)

要回答您的确切问题:

将http重定向到https是否不好?

一定不行。这很好。

  • @AdamDavis 加密算法可能是轻量级的,但握手开销仍然存在。此外,HTTPS 可防止 HTTP 代理缓存您的内容。在_大多数_情况下,HTTPS 的开销很小且值得,但要小心过度概括。 (42认同)
  • *“它使用更多的服务器资源来在每个页面上运行它。”* 现代 CPU 具有加密加速功能,使 SSL 几乎免费。不要担心开销。 (10认同)
  • @jasondavis 仅当您不花几分钟 [优化](https://insouciant.org/tech/ssl-performance-case-study/) 时。 (9认同)
  • 它杀死共享缓存,这对某些站点的使用模式很有用,并且通常保护很少(让人们知道您访问了该站点,但不知道您所做的详细信息很重要吗?这是 SSL 有用的唯一情况)。SSL 在每个资源上的主要优势不是您需要“保护”例如查看“关于我们”的人,而是您不能在应该使用的情况下不小心使用它。 (6认同)
  • 谢谢你的信息,我的老板告诉我他只在他网站的某些页面上运行 https 的原因是它使用了更多的服务器资源来在每个页面上运行它。你知道这件事吗,或者这是真的吗? (3认同)
  • +1 为“地狱号”。非常好。`这是我在阅读问题标题时的直接想法。 (2认同)

小智 51

虽然我支持仅使用 SSL 的站点的想法,但我会说一个缺点是开销取决于您的站点设计。我的意思是,例如,如果您在 img 标签中提供大量单个图像,这可能会导致您的网站运行速度变慢。我会建议任何使用仅使用 SSL 的服务器的人确保他们在以下方面工作。

  1. 如果您在链接中指定了自己的域名,请检查整个站点的内部链接,并确保它们都使用 HTTPS,这样就不会导致自己的重定向。
  2. 将您更新<meta property="og:url"为使用您的域的 https 版本。
  3. 如果您<base href=再次使用更新以使用 HTTPS。
  4. 如果可能,安装SPDY 协议
  5. 确保尽可能使用 CSS 图像精灵,以减少请求数量。
  6. 更新您的站点地图以指示 https 状态,以便蜘蛛随着时间的推移了解此更改。
  7. 将 Google 网站管理员工具等搜索引擎偏好更改为首选 HTTPS
  8. 在可能的情况下,将任何静态媒体卸载到 HTTPS CDN 服务器。

如果解决了上述问题,那么我怀疑您会有很多问题。

  • 使用“//yourserver.com/some-uri”而不是“http://yourserver.com/some-uri”可以解决问题 (1),因为浏览器将根据架构选择适当的架构(http 或 https)页面已加载。 (19认同)
  • Google 通过 `Referer` 标头看到某人正在访问的 URL。例如,该站点使用来自 Google CDN 的 jQuery,每次我重新加载站点时,我的浏览器都会向 Google 发送请求。因此,还会向 Google 发送一个“Referer”标头,该标头设置为此站点的 URL。因此,Google 可以在我的 IP 地址未更改期间跟踪我访问的站点(如果我在此期间使用 Google 服务,Google 也可以将此信息与我的 Google 帐户相关联)。 (4认同)

And*_*bel 38

我已经设置了 https,那么你应该在网站上的任何地方使用它。您将避免混合内容问题的风险,如果您拥有所需的工具,为什么不确保整个站点的安全?

关于从 http 到 https 的重定向,答案并没有那么简单。

重定向将使您的用户更容易,他们只需输入 whatsite.com 并重定向到 https。

但。如果用户有时在不安全的网络上(或者靠近Troy Hunt 和他的 Pineapple)怎么办?然后用户会出于旧习惯请求http://whateversite.com。那就是http。这可以妥协。重定向可能指向https://whateversite.com.some.infrastructure.long.strange.url.hacker.org。对于普通用户来说,这看起来很合法。但是可以拦截流量。

所以我们在这里有两个相互竞争的要求:用户友好和安全。幸运的是,有一种补救措施叫做HSTS header。有了它,您可以启用重定向。浏览器将移动到安全站点,但多亏了 HSTS 标头,它也会记住它。当用户在那个不安全的网络上输入 whatsite.com 时,浏览器将立即转到 https,而不会跳过 http 上的重定向。除非您处理非常敏感的数据,否则我认为对于大多数站点来说,这是安全性和可用性之间的公平权衡。(当我最近设置一个处理医疗记录的应用程序时,我没有重定向就使用了 https)。不幸的是 Internet Explorer 不支持 HSTS(来源),因此如果您的目标受众主要使用 IE 并且数据是敏感的,您可能需要禁用重定向。

因此,如果您不针对 IE 用户,请继续使用重定向,但也要启用 HSTS 标头。

  • @Velox - 我不认为“人们认为他们是安全的,因为端点是 HTTPS,忽略了以 GET 或 POST 发送到页面的所有信息都是纯文本这一事实”的含义是非常准确的。虽然存在一些问题,但 GET 查询参数在通过 HTTPS 传输期间不会明文传输。例如,参见:http://stackoverflow.com/questions/323200/is-an-https-query-string-secure POST 有效负载也受到保护,同时也不易受到日志记录和引用标头的影响。 (3认同)

Cal*_*ion 21

这没有任何问题,实际上这是最佳实践(对于应该通过安全连接提供服务的站点)。事实上,您所做的与我正在使用的配置非常相似:

<VirtualHost 10.2.3.40:80>
  ServerAdmin me@example.com
  ServerName secure.example.com
  RedirectMatch 301 (.*) https://secure.example.com$1
</VirtualHost>

# Insert 10.2.3.40:443 virtual host here :)
Run Code Online (Sandbox Code Playgroud)

301状态代码表示永久重定向,指示功能的客户端,以供日后连接的安全网址(如更新书签)。

如果您只通过 TLS/SSL 为站点提供服务,我建议您使用进一步的指令在您的安全虚拟主机中启用 HTTP严格传输安全(HSTS) :

<IfModule mod_headers.c>
  Header set Strict-Transport-Security "max-age=1234; includeSubdomains"
</IfModule>
Run Code Online (Sandbox Code Playgroud)

此标头指示有能力的客户端(我相信这些天中的大多数)在接下来的几秒钟内应将HTTPS与提供的域(secure.example.com在本例中为 )一起使用1234。该; includeSubdomains部分是可选的,表示该指令不仅适用于当前域,还适用于其下的任何域(例如alpha.secure.example.com)。请注意,HSTS 标头在通过 SSL/TLS 连接提供服务时才被浏览器接受!

要根据当前最佳实践测试您的服务器配置,Qualys 的 SSL 服务器测试服务是一个很好的免费资源;我的目标是至少获得 A-(由于缺乏对椭圆曲线加密技术的支持,Apache 2.2 无法获得更多分数)。


kri*_*sFR 5

哇 !将 HTTP 重定向到 HTTPS 是一件非常好的事情,我看不出有任何缺点。

只需确保您的客户端拥有正确的 CA,以避免在浏览器中出现关于证书的非用户友好警告。

此外,您设置 Apache 以重定向到 HTTPS 的方式似乎没问题。


Pot*_*thu 5

将http重定向到https是否不好?

一点都不。事实上,这样做是一件好事!

关于重定向:

通过完全消除重写,它可能会更有效率。这是我在类似情况下的配置...

<VirtualHost *:80>
  ServerName domainname.com

  <IfModule mod_alias.c>
    Redirect permanent / https://domainname.com/
  </IfModule>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)