感觉 V2 现在更加 "平民化" 了, 所以发点普通的东西, 说不定有用.
如有错漏, 还请雅正.
安全的 HTTP 协议. 正式名称为 HTTP over TLS. 注, S-HTTP 是另一种东西.
核心就是基于证书的安全协议, SSL/TLS. TLS 是将 SSL 标准化后的名字, 现在 TLS 基本替代了之前 SSL 这个称呼.
标准: RFC; 制定者: IETF
HTTP 是明文传输的, 所以容易被中间人攻击. 使用 HTTPS 可以保护信息安全.
中间人攻击的危害非常大, 攻击者不仅能获取你的信息, 还能修改你收到的信息.
其次, 现在主流浏览器对 HTTP/2 要求必须使用 over TLS. Chrome 51 版本之后还只支持 ALPN 而废止对 NPN 的支持, 如果不支持 ALPN 则自动降级到 HTTP/1.1 .
它们也都是协议, 主要定义了证书是如何传输及验证的. NPN 已经被逐渐废弃, 使用 ALPN 替代.
增加了证书, 增加了加解密, 理论上肯定有额外消耗.
但这些都是值得的. 而且这些消耗在目前一个页面动辄几百 KB 的年代, 应该不算什么. 并且, 浏览器对于 HTTP/2 只认加密的.
实现 HTTPS 服务一般需要两个东西:
后者在 Linux 发行版中一般会被预装, 一款名为 OpenSSL 的软件工具集. 这里还要注意, 只有 OpenSSL 1.0.2 及以上版本才支持 ALPN.
https://mozilla.github.io/server-side-tls/ssl-config-generator/
这是一个自动生成 Web 服务配置文件的工具. 提供了 Apache, Nginx, Lighttpd 添加 HTTPS 服务的建议配置文件.
这些配置主要是监听 443 端口, 加入证书, 定义一下加密方法.
使用免费证书或者自签名证书需要注意:
证书需要被认可才有效, 级别高的服务需要更可信的证书, 所以建议商业用户购买可靠的证书. 另外, 要注意证书链和有效期的问题.
一般浏览器地址栏中会显示. 包含 https 字样, 或者为绿色皆为该站支持 HTTPS.
不建议在 HTTPS 页面中使用非 HTTPS 的资源. 如果出现这种情况, 浏览器会做提醒.
也可以通过这个地址进行测试: https://www.ssllabs.com/ssltest/
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)
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.