TLS

传输层安全性协议(Transport Layer Security,TLS)及其前身安全套接层(Secure Sockets Layer,SSL)是一种安全协议,目的是为互联网通信提供安全及数据完整性保障。

简介

时间轴

  • 1994年,网景公司(Netscape)推出首版网景导航者网页浏览器时,推出HTTPS协议,以SSL进行加密,这是SSL的起源。
  • 1995年2月,发布SSL 2.0版
  • 1996年,发布SSL 3.0版
  • 1999年,IETF发布TLS 1.0(即 RFC 2246),是基于SSL 3.0将其标准化,并称为TLS(Transport Layer Security)。
  • 2006年4月,发布TLS 1.1(即 RFC 4346),它是TLS 1.0的更新。
  • 2008年8月,发布TLS 1.2(即 RFC 5246),基于TLS 1.1规范。
  • 2014年10月,Google发布在SSL 3.0中发现设计缺陷,建议禁用此一协议。攻击者可以向TLS发送虚假错误提示,然后将安全连接强行降级到过时且不安全的SSL 3.0,然后就可以利用其中的设计漏洞窃取敏感信息。
  • 2014年11月25日,Mozilla也在发布的Firefox 34中彻底禁用了SSL 3.0。
  • 2015年,RFC 7568 标准弃用了SSL 3.0。
  • 2018年8月,发布TLS 1.3 (即 RFC 8446)。


SSL/TLS证书

证书类型

证书类型 描述 描述
域名验证 (DV) 证书
Domain Validated Certificate
组织验证(OV)证书
Organization Validated Certificate
扩展验证(EV)证书
Extended Validation Certificate

数字证书颁发机构

数字证书颁发机构(Certificate Authority,简称CA),是负责发放和管理数字证书的第三方机构。

名称 描述 网址
Let's Encrypt 提供免费、自动化地颁发的域名验证 (DV) 证书,不提供组织验证(OV)证书和扩展验证(EV)证书。 https://letsencrypt.org/
DigiCert https://www.digicert.com/
GlobalSign https://www.globalsign.com/

自签名证书

自签名证书(self-signed certificate)是用自己的私钥签署的数字证书。自签证书和数字证书颁发机构(CA)签名证书一样可以用来加密数据,但不能用于向用户证明服务身份,浏览器会显示不安全。一般用于非公开的网页服务器、测试等。


自建CA并签发CA证书

常见证书程序

名称 描述
Acme.sh 是一个免费开源的ACME客户端脚本,支持证书自动签发和更新。

常见问题

更新证书后没有生效?
  • 1.检查证书有没有替换为新的证书,ls -al 证书目录查看下文件日期。对于docker容器部署,要查看容器内证书有没有正确更新,可以使用命令docker exec 容器名称 ls -al 证书目录
  • 2.检查服务器软件证书目录配置是否正确,再重新加载配置,以刷新证书。如Nginx软件使用nginx -s reload重新加载配置,容器部署nginx可以使用docker exec nginx nginx -s reload
  • 3.浏览器缓存了TLS会话信息,换个浏览器可以看到新证书已经生效。

资源

网站

参考资料