我刚刚在我的服务器上安装了 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...
该
[R]
标志本身就是一个302
重定向 (Moved Temporarily
)。如果您真的希望人们使用您网站的 HTTPS 版本(提示:您愿意),那么您应该使用[R=301]
永久重定向:A
301
保持你所有的 google-fu 和来之不易的 pageranks完好无损。确保mod_rewrite
已启用:要回答您的确切问题:
一定不行。这很好。
虽然我支持仅 SSL 站点的想法,但我想说一个缺点是开销取决于您的站点设计。我的意思是,例如,如果您在 img 标记中提供大量单独的图像,这可能会导致您的网站运行速度变慢。我会建议任何使用仅 SSL 服务器的人确保他们在以下方面工作。
<meta property="og:url"
以使用您的域的 https 版本。<base href=
再次使用更新以使用 HTTPS。如果上述问题得到解决,那么我怀疑你会有很多问题。
我已经设置了 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 标头。
这并没有错,事实上这是最佳实践(对于应该通过安全连接提供服务的站点)。实际上,您所做的与我正在使用的配置非常相似:
301
状态码表示永久重定向,指示有能力的客户端使用安全 URL 进行未来连接(例如更新书签)。如果您仅通过 TLS/SSL 为站点提供服务,我建议您在安全虚拟主机中启用 HTTP严格传输安全(HSTS)的进一步指令:
此标头指示有能力的客户端(我相信这些天中的大多数客户端)在接下来的几秒钟内只应在提供的域(在本例中为 )使用 HTTPS 。该部分是可选的,表示该指令不仅适用于当前域,还适用于其下的任何域(例如)。请注意,仅当通过 SSL/TLS 连接提供服务时,浏览器才接受 HSTS 标头!
secure.example.com
1234
; includeSubdomains
alpha.secure.example.com
要根据当前的最佳实践测试您的服务器配置,一个很好的免费资源是Qualys 的 SSL 服务器测试服务;我的目标是至少获得 A- (由于缺乏对椭圆曲线密码学的支持,您无法获得比 Apache 2.2 更高的分数)。
哇 !将 HTTP 重定向到 HTTPS 是一件非常好的事情,我看不出有任何缺点。
只需确保您的客户拥有正确的 CA 以避免在浏览器中出现关于证书的非用户友好警告。
此外,您设置 Apache 以重定向到 HTTPS 的方式似乎没问题。
一点都不。其实,这是一件好事!
关于重定向:
通过完全消除重写,它可能会更有效率。这是我在类似情况下的配置...
HTTPS 并非万无一失。当然,通常强制 HTTPS 是一件好事。它可以防止普通犯罪分子对您的用户做任何坏事。
但请记得检查 SSL 设置,如 SSLCiphers 设置。禁用诸如 RC4 加密、SSLv2 和 SSLv3 协议之类的东西。此外,您应该了解您系统的密码系统库是否支持 TLS1.2(这是您想要拥有的东西;))
打开SSL,它是一件好事。
就我个人而言,我完全赞成使用 SSL 来保护网络上的连接,但是我觉得这里所有其他答案都错过了一点,即并非所有能够进行 HTTP 连接的设备和软件都能够使用 SSL,因此,如果用户不支持它,我会考虑为用户提供一些避免它的方法。也有可能在某些加密技术非法的国家/地区的人们将被禁止访问您的网站。我会考虑添加一个带有链接的未加密登录页面,以强制使用该站点的不安全版本,但除非用户特别选择按照您所说的那样做,然后将它们转发到 HTTPS 版本。
以下是一些广泛的笔触问题:
MITM/SSLSTRIP:这是一个巨大的警告。如果您要通过 HTTPS 为您的站点提供服务,请在站点上禁用 HTTP。否则,您会让您的用户面临各种中间人攻击,包括 SSLSTRIP,它会拦截请求并通过 HTTP 悄悄地为它们提供服务,将他们自己的恶意软件脚本插入到流中。如果用户没有注意到,那么他们会认为他们的会话是安全的,而实际上并非如此。
如果您的站点需要安全登录,则应保护整个用户会话。不要通过 HTTPS 进行身份验证,然后将用户重定向回 HTTP。如果你这样做了,你会让你的用户容易受到 MITM 攻击。如今,标准的身份验证方法是进行一次身份验证,然后来回传递身份验证令牌(在 cookie 中)。但是,如果您通过 HTTPS 进行身份验证然后重定向到 HTTP,那么中间人可以拦截该 cookie 并使用该站点,就好像他们是您的经过身份验证的用户一样,绕过了您的安全性。
出于所有实际目的,HTTPS 的“性能”问题仅限于创建新连接所涉及的握手。尽你所能最大限度地减少来自 URL 的多个 HTTPS 连接的需求,你将遥遥领先。坦率地说,即使您通过 HTTP 提供内容也是如此。如果您阅读 SPDY,您会意识到它所做的一切都是为了尝试通过单个连接从单个 URL 提供所有内容。是的,使用 HTTPS 会影响缓存。但是现在有多少网站只是静态的、可缓存的内容呢?使用 Web 服务器上的缓存可以最大限度地减少重复检索未更改数据的冗余数据库查询,并防止昂贵的代码路径不必要地频繁执行,您可能会获得更多收益。
重定向到 HTTPS 非常好,但我阅读它也取决于您如何组织重定向。
按照security.stackexchange.com上的这个答案 中的建议,制作一个专用的虚拟主机来将传入的 HTTP 请求重定向到您的 HTTPS 连接- 听起来非常聪明,并且会关闭一些额外的安全威胁。Apache 中的配置如下所示: