超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,
缩写:HTTPS,常称为HTTP over TLS,HTTP over SSL或HTTP Secure)是一种透过计算机网络进行安全通信的
传输协议。HTTPS经由
HTTP进行通信,但利用SSL/TLS来加密数据包。HTTPS开发的主要目的,是提供对
网站服务器的
身份认证,保护交换数据的隐私与
完整性。这个协议由
网景公司(Netscape)在1994年首次提出,随后扩展到
互联网上。
主要思想
HTTPS的主要思想是在不安全的网络上创建一安全信道,并可在使用适当的加密包和服务器证书可被验证且可被信任时,对
窃听和
中间人攻击提供合理的防护。
HTTPS的信任继承基于预先安装在浏览器中的证书颁发机构(如
Symantec、
Comodo、
GoDaddy和
GlobalSign等)(意即“我信任证书颁发机构告诉我应该信任的”)。因此,一个到某网站的HTTPS连接可被信任,
当且仅当:
统计
截至2018年6月,
Alexa排名前100万的网站中有34.6%使用HTTPS作为默认值,互联网141387个最受欢迎网站的43.1%具有安全实施的HTTPS,以及45%的页面加载(透过Firefox纪录)使用HTTPS。2017年3月,中国注册域名总数的0.11%使用HTTPS。
根据
Mozilla统计,自2017年1月以来,超过一半的
网站流量被加密。
浏览器实现
当连接到一个提供无效证书的网站时,较旧的浏览器会使用一对话框询问用户是否继续,而较新的浏览器会在整个窗口中显示警告;较新的浏览器也会在
地址栏中凸显网站的安全信息(如,扩展验证证书在
Firefox里会使地址栏出现绿锁标志)。
电子前哨基金会曾经建议“在理想的世界中,任何网络请求都能默认为HTTPS的。”该基金会也曾制作了
Firefox扩展组件来推广这一建议。在
Chrome浏览器上也有类似的扩展。
技术细节
与HTTP的差异
与
HTTP的
URL由“http://”起始且默认使用
端口80不同,HTTPS的URL由“https://”起始且默认使用
端口443。
HTTP是不安全的,且攻击者通过
监听和
中间人攻击等手段,可以获取网站帐户和敏感信息等。HTTPS被设计为可防止前述攻击,并在正确配置时被认为是安全的。
协议层
HTTP协议和安全协议同属于应用层(
OSI模型的最高层),具体来讲,安全协议工作在HTTP之下,运输层之上:安全协议向运行HTTP的进程提供一个类似于TCP的套接字,供进程向其中注入报文,安全协议将报文加密并注入运输层套接字;或是从运输层获取加密报文,解密后交给对应的进程。严格地讲,HTTPS并不是一个单独的协议,而是对工作在一加密连接(
TLS或SSL)上的常规HTTP协议的称呼。
HTTPS报文中的任何东西都被加密,包括所有报头和荷载。除了可能的
选择密文攻击(参见
限制小节)之外,一个攻击者所能知道的只有在两者之间有一连接这一事实。
服务器设置
要使一网络服务器准备好接受HTTPS连接,管理员必须创建一
数字证书,并交由证书颁发机构签名以使浏览器接受。证书颁发机构会验证数字证书持有人和其声明的为同一人。浏览器通常都预装了证书颁发机构的证书,所以他们可以验证该签名。
由证书颁发机构签发的证书有免费的,也有每年收费数美元到数千美元不等的。一个组织也可能有自己的证书颁发机构,尤其是当设置浏览器来访问他们自己的网站时(如,运行在公司或学校
局域网内的网站)。他们可以容易地将自己的证书加入浏览器中。
HTTPS也可被用作客户端
认证手段来将一些信息限制给合法的用户。要做到这样,管理员通常会给每个用户创建证书(通常包含了用户的名字和
电子邮件地址)。这个证书会被放置在浏览器中,并在每次连接到服务器时由服务器检查。
证书可在其过期前被吊销,通常情况是该证书的私钥已经失密。较新的浏览器如
Google Chrome、
Firefox、
Opera和运行在Windows Vista上的
Internet Explorer都实现了
在线证书状态协议(OCSP)以排除这种情形:浏览器将网站提供的证书的序列号通过OCSP发送给证书颁发机构,后者会告诉浏览器证书是否还是有效的。
局限
TLS有两种策略:简单策略和交互策略。交互策略更为安全,但需要用户在他们的浏览器中安装个人的
证书来进行
认证。
不管使用了哪种策略,协议所能提供的保护总强烈地依赖于浏览器的实现和服务器软件所支持的
加密算法。
HTTPS并不能防止站点被
网络蜘蛛抓取。在某些情形中,被加密资源的
URL可仅通过截获请求和响应的大小推得,这就可使攻击者同时知道明文(公开的静态内容)和密文(被加密过的明文),从而使
选择密文攻击成为可能。
因为
SSL在HTTP之下工作,对上层协议一无所知,所以SSL服务器只能为一个IP地址/端口组合提供一个证书。这就意味着在大部分情况下,使用HTTPS的同时支持基于名字的虚拟主机是不很现实的。一种叫域名指示(SNI)的方案通过在加密连接创建前向服务器发送主机名解决了这一问题。
Firefox2、
Opera8和运行在Windows Vista的
Internet Explorer7都加入了对SNI的支持。
因为HTTPS连接所用的
公钥以明文传输,因此中国大陆的防火长城可以对特定网站按照匹配的黑名单证书,通过伪装成对方向连接两端的计算机发送RST包干扰两台计算机间正常的
TCP通讯,以打断与特定IP地址之间的
443端口握手,或者直接使握手的数据包丢弃,导致握手失败,从而导致TLS连接失败。这也是一种互联网信息审查和屏蔽的技术手段。
如果
Mac OS X中的家长控制被启用,那么HTTPS站点必须显式地在“总是允许”列表中列出。
历史
网景在1994年创建了HTTPS,并应用在
网景导航者浏览器中。最初,HTTPS是与
SSL一起使用的;在SSL逐渐演变到
TLS时,最新的HTTPS也在2000年五月公布下来。