AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 570288
Accepted
JasonDavis
JasonDavis
Asked: 2014-01-28 16:12:50 +0800 CST2014-01-28 16:12:50 +0800 CST 2014-01-28 16:12:50 +0800 CST

将http重定向到https不好吗?

  • 772

我刚刚在我的服务器上安装了 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] 

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

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

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


更新的问题

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

在此处输入图像描述

apache-2.2
  • 11 11 个回答
  • 106693 Views

11 个回答

  • Voted
  1. Best Answer
    Mark Henderson
    2014-01-28T16:27:59+08:002014-01-28T16:27:59+08:00

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

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

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

    a2enmod rewrite
    

    要回答您的确切问题:

    将http重定向到https不好吗?

    一定不行。这很好。

    • 322
  2. TheBritishGeek
    2014-01-28T18:08:16+08:002014-01-28T18:08:16+08:00

    虽然我支持仅 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 服务器。

    如果上述问题得到解决,那么我怀疑你会有很多问题。

    • 51
  3. Anders Abel
    2014-01-28T23:40:50+08:002014-01-28T23:40:50+08:00

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

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

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

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

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

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

    • 38
  4. Calrion
    2014-01-28T18:20:53+08:002014-01-28T18:20:53+08:00

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

    <VirtualHost 10.2.3.40:80>
      ServerAdmin [email protected]
      ServerName secure.example.com
      RedirectMatch 301 (.*) https://secure.example.com$1
    </VirtualHost>
    
    # Insert 10.2.3.40:443 virtual host here :)
    

    301状态码表示永久重定向,指示有能力的客户端使用安全 URL 进行未来连接(例如更新书签)。

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

    <IfModule mod_headers.c>
      Header set Strict-Transport-Security "max-age=1234; includeSubdomains"
    </IfModule>
    

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

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

    • 21
  5. krisFR
    2014-01-28T16:35:44+08:002014-01-28T16:35:44+08:00

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

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

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

    • 5
  6. Pothi Kalimuthu
    2014-01-29T05:45:39+08:002014-01-29T05:45:39+08:00

    将http重定向到https不好吗?

    一点都不。其实,这是一件好事!

    关于重定向:

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

    <VirtualHost *:80>
      ServerName domainname.com
    
      <IfModule mod_alias.c>
        Redirect permanent / https://domainname.com/
      </IfModule>
    </VirtualHost>
    
    • 5
  7. Tobias Mädel
    2014-01-28T23:43:34+08:002014-01-28T23:43:34+08:00

    HTTPS 并非万无一失。当然,通常强制 HTTPS 是一件好事。它可以防止普通犯罪分子对您的用户做任何坏事。

    但请记得检查 SSL 设置,如 SSLCiphers 设置。禁用诸如 RC4 加密、SSLv2 和 SSLv3 协议之类的东西。此外,您应该了解您系统的密码系统库是否支持 TLS1.2(这是您想要拥有的东西;))

    打开SSL,它是一件好事。

    • 4
  8. Vality
    2014-01-29T02:13:50+08:002014-01-29T02:13:50+08:00

    就我个人而言,我完全赞成使用 SSL 来保护网络上的连接,但是我觉得这里所有其他答案都错过了一点,即并非所有能够进行 HTTP 连接的设备和软件都能够使用 SSL,因此,如果用户不支持它,我会考虑为用户提供一些避免它的方法。也有可能在某些加密技术非法的国家/地区的人们将被禁止访问您的网站。我会考虑添加一个带有链接的未加密登录页面,以强制使用该站点的不安全版本,但除非用户特别选择按照您所说的那样做,然后将它们转发到 HTTPS 版本。

    • 3
  9. Craig Tullis
    2014-04-20T02:43:59+08:002014-04-20T02:43:59+08:00

    以下是一些广泛的笔触问题:

    • MITM/SSLSTRIP:这是一个巨大的警告。如果您要通过 HTTPS 为您的站点提供服务,请在站点上禁用 HTTP。否则,您会让您的用户面临各种中间人攻击,包括 SSLSTRIP,它会拦截请求并通过 HTTP 悄悄地为它们提供服务,将他们自己的恶意软件脚本插入到流中。如果用户没有注意到,那么他们会认为他们的会话是安全的,而实际上并非如此。

      • 但是,这样做的问题是,如果您的站点是公共站点,并且您只是毫不客气地禁用 HTTP,则可能会失去很多访问者。如果站点无法使用 HTTP 加载,他们甚至可能不会尝试使用 HTTPS。
    • 如果您的站点需要安全登录,则应保护整个用户会话。不要通过 HTTPS 进行身份验证,然后将用户重定向回 HTTP。如果你这样做了,你会让你的用户容易受到 MITM 攻击。如今,标准的身份验证方法是进行一次身份验证,然后来回传递身份验证令牌(在 cookie 中)。但是,如果您通过 HTTPS 进行身份验证然后重定向到 HTTP,那么中间人可以拦截该 cookie 并使用该站点,就好像他们是您的经过身份验证的用户一样,绕过了您的安全性。

    • 出于所有实际目的,HTTPS 的“性能”问题仅限于创建新连接所涉及的握手。尽你所能最大限度地减少来自 URL 的多个 HTTPS 连接的需求,你将遥遥领先。坦率地说,即使您通过 HTTP 提供内容也是如此。如果您阅读 SPDY,您会意识到它所做的一切都是为了尝试通过单个连接从单个 URL 提供所有内容。是的,使用 HTTPS 会影响缓存。但是现在有多少网站只是静态的、可缓存的内容呢?使用 Web 服务器上的缓存可以最大限度地减少重复检索未更改数据的冗余数据库查询,并防止昂贵的代码路径不必要地频繁执行,您可能会获得更多收益。

    • 3
  10. Wilt
    2015-11-06T01:39:42+08:002015-11-06T01:39:42+08:00

    重定向到 HTTPS 非常好,但我阅读它也取决于您如何组织重定向。

    按照security.stackexchange.com上的这个答案 中的建议,制作一个专用的虚拟主机来将传入的 HTTP 请求重定向到您的 HTTPS 连接- 听起来非常聪明,并且会关闭一些额外的安全威胁。Apache 中的配置如下所示:

    # Virtual host for rerouting
    <VirtualHost *:80>
        ServerName www.example.com
        Redirect permanent / https://www.example.com/
    </VirtualHost>
    
    # Virtual host for secure hosting on https
    <VirtualHost *:443>
        ServerName www.example.com
        SSLEngine on
        Header set Strict-Transport-Security "max-age=8640000;includeSubdomains"
    
        ...site settings...
    
    </VirtualHost>
    
    • 2

相关问题

  • Apache Django Mod_Wsgi - 自动重新加载应用程序

  • Apache:对多个虚拟主机使用相同的目录指令

  • Apache 上的子域不工作 - 找不到服务器

  • PHP 作为 CGI 还是 Apache 模块?

  • 避免将某些丢失的文件记录到 Apache2 错误日志中

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve