article.read --id=176

SSL证书与HTTPS:为数据传输加上一把锁

// published: 2025-08-07

互联网诞生之初,HTTP协议以明文传输数据,就像在明信片上写信——任何中间节点都可以读取内容。这在早期的学术网络中不是问题,但当互联网成为商业和社交的主要平台,当用户开始在网站上输入密码、信用卡号、私密消息时,明文传输就成了巨大的安全隐患。SSL/TLS协议的出现,为HTTP通信加上了一层坚固的加密保护,HTTPS(HTTP over SSL/TLS)也从可选项变成了现代网站的基本要求。

SSL/TLS的工作原理基于非对称加密和对称加密的巧妙结合。非对称加密使用一对密钥:公钥用于加密,私钥用于解密。服务器将公钥放在SSL证书中发送给客户端,客户端用公钥加密一个随机生成的对称密钥,发送给服务器。服务器用私钥解密得到对称密钥,之后双方使用这个对称密钥进行通信。为什么不全程使用非对称加密?因为非对称加密的计算开销很大,而对称加密快得多。这种混合方案兼顾了安全性和性能。

SSL证书不仅包含公钥,还包含域名、组织信息、有效期等元数据,以及证书颁发机构(CA)的数字签名。CA是受信任的第三方,浏览器和操作系统内置了一组根CA证书。当浏览器收到服务器的SSL证书时,会验证证书的签名是否来自受信任的CA,验证域名是否匹配,验证证书是否在有效期内,验证证书是否被吊销。只有通过所有验证,浏览器才会显示那把象征安全的小锁。

Let's Encrypt是SSL证书领域的革命者。在Let's Encrypt出现之前,SSL证书需要向商业CA购买,价格从几十美元到数千美元不等,申请流程繁琐,续期需要手动操作。Let's Encrypt提供完全免费的SSL证书,有效期90天,支持自动化申请和续期。它使用ACME协议(Automated Certificate Management Environment)验证域名所有权:你在服务器上运行Certbot客户端,Certbot会在你的网站上放置一个特定的文件或设置一个特定的DNS记录,Let's Encrypt验证这个文件或记录的存在,确认你拥有该域名,然后颁发证书。整个过程完全自动化,几分钟内完成。

Let's Encrypt的出现极大地推动了HTTPS的普及。根据统计,2015年(Let's Encrypt推出前)全球只有40%的网页使用HTTPS,到2023年这个比例已经超过90%。Google、Mozilla等浏览器厂商也在推动HTTPS:Chrome会将HTTP网站标记为"不安全",搜索引擎会给HTTPS网站更高的排名权重。HTTPS已经从"最佳实践"变成了"基本要求"。

配置HTTPS时有一些重要的安全实践。HSTS(HTTP Strict Transport Security)是一个HTTP响应头,告诉浏览器在指定时间内只能通过HTTPS访问该网站,即使用户输入了http://也会自动转换为https://。这可以防止SSL剥离攻击(攻击者将HTTPS降级为HTTP)。密码套件(Cipher Suite)的选择也很重要:应该禁用过时的算法(如RC4、3DES),优先使用现代的算法(如AES-GCM、ChaCha20-Poly1305)。TLS版本也要及时更新:TLS 1.0和1.1已经被废弃,应该只支持TLS 1.2和1.3。

TLS 1.3是最新的版本,相比TLS 1.2有显著的改进:握手过程从两个往返(2-RTT)减少到一个往返(1-RTT),在恢复会话时甚至可以做到零往返(0-RTT);移除了不安全的加密算法和特性,简化了协议;增强了隐私保护,握手过程中的更多信息被加密。TLS 1.3的性能提升对移动网络尤其重要:在高延迟的网络环境中,减少一个往返可以节省数百毫秒。

证书的管理也是一门学问。通配符证书(Wildcard Certificate)可以保护一个域名及其所有子域名(如*.example.com),适合有大量子域名的场景。多域名证书(SAN Certificate)可以在一个证书中包含多个域名,适合托管多个网站的场景。证书的续期需要自动化:Certbot可以配置为定期任务(cron job),在证书到期前自动续期。证书的私钥必须妥善保管:如果私钥泄露,攻击者可以冒充你的网站,因此私钥应该设置严格的文件权限,不应该被提交到版本控制系统。

HTTPS不仅保护了数据传输的安全,也是现代Web特性的前提。Service Worker、Web Push Notification、Geolocation API等许多浏览器API只能在HTTPS环境下使用。HTTP/2和HTTP/3虽然理论上可以在HTTP上运行,但实际上所有浏览器都要求必须使用HTTPS。因此,部署HTTPS不仅是安全需求,也是功能需求。

当浏览器地址栏显示那把小锁,用户便多了一份安心。他们知道自己的数据在传输过程中是加密的,知道自己访问的网站是真实的(而不是钓鱼网站)。这份安心,正是互联网信任体系的基础。作为运维工程师,正确配置和维护HTTPS,是保护用户隐私和安全的基本责任。