民间布道: 让 Web 服务使用 HTTPS

2016-06-19 00:42:29 +08:00
 iugo

感觉 V2 现在更加 "平民化" 了, 所以发点普通的东西, 说不定有用.

如有错漏, 还请雅正.


什么是 HTTPS?

安全的 HTTP 协议. 正式名称为 HTTP over TLS. 注, S-HTTP 是另一种东西.

核心就是基于证书的安全协议, SSL/TLS. TLS 是将 SSL 标准化后的名字, 现在 TLS 基本替代了之前 SSL 这个称呼.

标准: RFC; 制定者: IETF

为什么要使用 HTTPS?

HTTP 是明文传输的, 所以容易被中间人攻击. 使用 HTTPS 可以保护信息安全.

中间人攻击的危害非常大, 攻击者不仅能获取你的信息, 还能修改你收到的信息.

其次, 现在主流浏览器对 HTTP/2 要求必须使用 over TLS. Chrome 51 版本之后还只支持 ALPN 而废止对 NPN 的支持, 如果不支持 ALPN 则自动降级到 HTTP/1.1 .

什么是 ALPN, 什么是 NPN?

它们也都是协议, 主要定义了证书是如何传输及验证的. NPN 已经被逐渐废弃, 使用 ALPN 替代.

使用 HTTPS 会变慢吗?

增加了证书, 增加了加解密, 理论上肯定有额外消耗.

但这些都是值得的. 而且这些消耗在目前一个页面动辄几百 KB 的年代, 应该不算什么. 并且, 浏览器对于 HTTP/2 只认加密的.

如何让 Web 服务支持 HTTPS?

实现 HTTPS 服务一般需要两个东西:

  1. 提供 HTTP 服务的.
  2. 提供 TLS 服务的.

后者在 Linux 发行版中一般会被预装, 一款名为 OpenSSL 的软件工具集. 这里还要注意, 只有 OpenSSL 1.0.2 及以上版本才支持 ALPN.

如何配置 Web 服务器

https://mozilla.github.io/server-side-tls/ssl-config-generator/

这是一个自动生成 Web 服务配置文件的工具. 提供了 Apache, Nginx, Lighttpd 添加 HTTPS 服务的建议配置文件.

这些配置主要是监听 443 端口, 加入证书, 定义一下加密方法.

如何免费让 Web 服务支持 HTTPS?

  1. 获取免费证书 Let's Encrypt, StartSSL
  2. 通过免费 CDN CloudFlare

使用免费证书或者自签名证书需要注意:

证书需要被认可才有效, 级别高的服务需要更可信的证书, 所以建议商业用户购买可靠的证书. 另外, 要注意证书链和有效期的问题.

如何检测一个网站是否支持 HTTPS?

一般浏览器地址栏中会显示. 包含 https 字样, 或者为绿色皆为该站支持 HTTPS.

不建议在 HTTPS 页面中使用非 HTTPS 的资源. 如果出现这种情况, 浏览器会做提醒.

也可以通过这个地址进行测试: https://www.ssllabs.com/ssltest/

附录

相关 RFC 标准

HTTPS: RFC 2818 - HTTP Over TLS (2000)

HTTP/2: RFC 7540 - Hypertext Transfer Protocol Version 2 (2015)

TLS: RFC 5246 - The Transport Layer Security (TLS) Protocol Version 1.2 (2008)

ALPN: RFC 7639 - The ALPN HTTP Header Field (2015)


原文: https://blog.clian.net/web-https/

9014 次点击
所在节点    程序员
56 条回复
zrj766
2016-06-19 11:16:28 +08:00
上了 SSL 吧,虽然就是个小博客,那堆图片替换还是让我费神的。。
612
2016-06-19 12:11:07 +08:00
@lslqtz 沃通的根就是 startssl
SourceMan
2016-06-19 12:16:27 +08:00
这种文章,直接拉到上面,有推广链接的差评
而且按照 V2EX 的规则,你可以正文直接一个原文 URL 的
lslqtz
2016-06-19 12:22:57 +08:00
@612 那有咋样。。说的沃通价格和 startssl 一样好似的
lslqtz
2016-06-19 12:23:57 +08:00
@yexm0
哪家我还真没听说过 我记得 comodo 可以 geotrust 可以 globalsign 可以
lyragosa
2016-06-19 12:28:01 +08:00
@New2016 这是个什么鬼,免费生成泛域名?
lavande
2016-06-19 13:20:45 +08:00
我想借机吐槽新浪微薄的登录页竟然不是 https
aaronlam
2016-06-19 13:50:42 +08:00
@New2016 请问下,这个 SSL 证书是 Alphassl 官方提供的么?
lslqtz
2016-06-19 14:04:52 +08:00
@lyragosa 我用的第一个生成,他发的应该是源码。
New2016
2016-06-19 14:07:24 +08:00
@lyragosa 可以泛域名,可以 ecc ,需要 admin@域名 之类的邮箱。全自动,除了 csr 要自己弄


@aaronlam 不清楚
lyragosa
2016-06-19 14:22:37 +08:00
@New2016 有点厉害,不过申请了半天没发来邮件……
maxsec
2016-06-19 15:39:20 +08:00
@yexm0 StartSSL 也支持中文名字
kkhu2004
2016-06-19 15:41:51 +08:00
手动感谢。
lslqtz
2016-06-19 16:17:32 +08:00
@lyragosa 用第一个可以,发我 csr 和邮箱,我帮你申请发邮件给你。
hfeeki
2016-06-19 16:24:57 +08:00
伟大的墙会组织你用 https 的
62900015
2016-06-19 16:50:09 +08:00
@New2016 https://github.com/Mujj/alpha-ssl-auto 这里是中文版,渠道都一样,都是 singlehop ,配置你的 singlehop 账号密码进去就 OK 。
imnpc
2016-06-19 17:52:36 +08:00
重要的网站都建议部署 SSL
v9ox
2016-06-19 18:03:55 +08:00
但这些都是值得的. 而且这些消耗在目前一个页面动辄几百 KB 的年代, 应该不算什么. 并且, 浏览器对于 HTTP/2 只认加密的.


没看懂最后一句...
wql
2016-06-19 18:17:11 +08:00
纠正一下, ALPN 是一种 HTTP 版本协商协议,已经逐渐替代已经被废弃的 NPN ,成为标准。
BearTher
2016-06-19 18:29:04 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/286764

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX