速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

StackOverflow 转向默认使用 HTTPS

  • 2017-06-14
  • 本文字数:1312 字

    阅读完需:约 4 分钟

StackOverflow 的首席架构师 Nick Craver 发表了一篇博文,宣布 StackOverflow 迁移到 HTTPS。在该过程中,他们经历了一些技术挑战,包括对数百个域的支持、URL 迁移、用户生成内容处理,以及如何达到网站所需的严格性能需求。

这次迁移总体上历时四年,但 Craver 强调,该工作一直以来都并非是工作重点。例如,网站上并不存在财务信息或是信用卡支付,网站信息也并非需安全防护的高价值信息。Craver 指出,事实上,StackOverflow 总是将性能置于安全之上:

我应指出,性能是我们的首要驱动力,而非网站的安全性。虽然我们也需要安全性,但是安全本身并不值得我们付出对整个网站部署 HTTPS 所花费的时间。

Craver 解释说,HTTP/2 的广泛采用及在性能上的优点是他们升级到 HTTPS 的主要驱动力。这些优点包括: Request/Response 多路复用(Multiplexing)服务器推送技术(Server Push), 头部压缩(Header Compression)、数据流优先(Stream Prioritization)和更少的域(Origin)连接等。由于浏览器并不支持在HTTP 上实现HTTP/2,因此迁移到HTTPS 不仅是一个性能上的需求,同时也是一个安全上的需求。

StackOverflow 具有上百个域和子域。站点的主证书中包括了 StackOverflow 的全部主域,以及由通配符表示的域。在这种多个域的证书和 IP 一致的情况下,可利用 HTTP/2 提供的机制,支持浏览器对多个域使用单一的共享连接,这将提高性能。

在转向 HTTPS 的过程中,还需要做一些域迁移工作。例如,需要将“meta”域从“meta.*.stackexchange.com”转化为“*.meta.stackexchange.com”。Craver 特别指出,这样做是因为通配符必须位于域名的最左边,单一的通配符更易于维护。

此外,网站中的敏感 cookies 现在是从顶级域继承而来的,原先可访问它们的域已经被移动了。Craver 给出了一个例子,“SendGrid”标签现已移动到“stackoverflow.email”域中。

Craver 还指出,网站中存在着大量 HTTP 用户生成内容,例如提问中给出的图片、用户配置信息、Youtube 视频等。在迁移时所采取的第一步,是对所有新的用户生成内容强制使用 HTTPS,将 HTTP 内容限定为遗留内容。然后,下一步是对遗留内容的迁移。其中的大部分内容仅需要进行查找并替换即可。对于那些团队把握不准的内容,如果内容工作异常,那么它或者被转化为 HTTPS,或者被转化为一个链接。

JavaScript 代码中也存在着数以千计的链接,这些链接基本上是使用 HTTP 的,甚至位于不同的“meta”域中。据 Craver 介绍,他们是逐个代码分别处理的,使用“<site>.Url(‘/path’)”调用替换了这些连接。只要启用了特性标识,这将从根本上转化这些链接为 HTTPS。

Craver 强调,他们也非常重视避免丢失任何来自 Google 的流量,这是网站流量的重要来源,因而也是网站收入的主要来源。尽管 Google 所需的更改非常简单(将 301 跳转从 HTTP 更改为 HTTPS,并更新权威链接),团队也必须要慎重,以免犯错误。

迁移最后还会涉及 WebSocket,需要将所有事情转换为 WebSocket 加密,这也是为避免影响网站性能而在功能上的直接需要。据 Craver 介绍,他们可一次同时打开近五十万个并发的 websocket 连接。

该博文的内容很长,但是值得一读。

查看英文原文: Stack Overflow Becomes HTTPS by Default

2017-06-14 19:001959
用户头像

发布了 227 篇内容, 共 74.8 次阅读, 收获喜欢 28 次。

关注

评论

发布
暂无评论
发现更多内容

Qt|控件QPushButton讲解

中国好公民st

qt 按钮 9月月更

算法基础(三)| 二分图解及代码模板

timerring

算法 二分查找 9月月更

react面试如何回答才能让面试官满意

beifeng1996

React

百度交易中台之资产系统架构浅析

百度Geek说

数据库 架构 资产管理

Pipy 同一 IP 多个 SSL 域名

Flomesh

Service Mesh 服务网格

慢查询 MySQL 定位优化技巧,从10s优化到300ms

程序知音

Java MySQL 数据库 后端技术 MySQL 数据库

带你认识全新的华为云IoT路网数字化服务

华为云开发者联盟

云计算 后端 物联网 交通 企业号九月金秋榜

阿里云大数据助力知衣科技打造AI服装行业核心竞争力

阿里云大数据AI技术

人工智能 大数据 模型训练 客户案例

CISO 需考虑的五项 Kubernetes 安全措施

SEAL安全

Kubernetes 软件供应链安全

羊了个羊闯关游戏开发(链改代币分红)

开发微hkkf5566

我的C/C++技术成长之路

Fire_Shield

程序人生 C/C++ 9月月更

Github上标星103K的Spring Security实战手册,直接霸榜

程序知音

Java spring 程序员 spring security 后端技术

以Vue为代表的提升小程序开发效率框架及工具

Geek_99967b

小程序

异步处理 —— RxJS Observable

掘金安东尼

前端 9月月更

火山语音7篇论文入选国际顶会Interspeech

科技热闻

云原生数字化转型与金融信创建设,鱼和熊掌可兼得

BoCloud博云

云计算 云原生 信创

日均数亿推送稳定性监控实践

得物技术

Java 设计模式 重构 SLA 企业号九月金秋榜

Wiki在企业内部的应用和管理,如何构建有效的Wiki系统?

Baklib

写给自己的react面试题总结

beifeng1996

前端 React

“密评”,听说过没

华为云开发者联盟

云计算 网络安全 开发 企业号九月金秋榜

VS Code摸鱼神器,让你快速开发AI模型

华为云开发者联盟

人工智能 企业号九月金秋榜

SQL就业市场最吃香!解密为什么SQL历经半个世纪仍经久不衰?

雨果

sql

英伟达NVIDIA为何可以在高性能计算GPU中处于不败地位?

GPU算力

前端如何学习算法?

大师兄

JavaScript 前端算法 9月月更

最新MLPerf基准测试:基于阿里云GPU云服务器的AIACC在图像识别封闭式场景下夺冠

阿里云弹性计算

图像识别 GPU实例 AIACC

校招 | StarRocks首次Open Day报名ING!

StarRocks

数据库

分布式系统中如何实现临界资源的互斥访问

华为云开发者联盟

云计算 后端 开发 企业号九月金秋榜

MySQL DDL执行方式-Online DDL介绍

京东科技开发者

MySQL 数据库 ddl DML Online DDL

MySQL DDL执行方式-Online DDL介绍

京东科技开发者

Java MySQL 数据 ddl DML

如何创建 Angular library 并在生产环境中消费

汪子熙

JavaScript typescript angular library 9月月更

从0到1项目搭建-框架搭建(附源码)

微枫Micromaple

架构 springboot Druid Mybatis-Plus 9月月更

StackOverflow转向默认使用HTTPS_DevOps & 平台工程_Andrew Morgan_InfoQ精选文章