最佳实践——开放 80 端口

最近更新: | 所有文档

我们偶尔会收到使用 HTTP-01 验证类型时遇到问题的人的报告,这是因为他们通过防火墙封闭了 Web 服务器上的 80 端口。 我们的建议是,所有用于一般 Web 使用的服务器应该同时在 80 端口上提供 HTTP 服务、在 443 端口上提供 HTTPS 服务。 他们还应该将所有发送至 80 端口的请求重定向至 443 端口,并且在(443 端口上的)所有响应中添加 HSTS 标头。

开放 80 端口并不会在服务器中引入更大的攻击面,因为 80 端口和 443 端口通常由同样的软件提供服务。

关闭 80 端口不会降低意外通过 HTTP 访问您网站的人的风险。 在正常情况下,那个人将收到 HTTPS 重定向,其后续通信将受到保护。 如果该人受到活跃的 MITM 攻击,MITM 攻击者将在 80 端口上回应请求,因此您的站点将永远无法对该用户回答“连接已被拒绝”。

最后,保持 80 端口开放并提供重定向有助于让人们访问您网站的正确版本(HTTPS 版本)。 有很多您无法控制的情况都可能暂时将访问者引导至您网站的 HTTP 版本,例如电子邮件中的自动链接或者手动输入网站域名。 对他们来说,获得重定向比获得错误更好。

不幸的是,在某些情况下您可能无法控制 80 端口的开放或者关闭。 部分 ISP(通常为住宅网络提供商)会因各种原因阻止对 80 端口的访问。 若您的 ISP 阻止您使用 80 端口但您仍旧希望从 Let’s Encrypt 获取证书,您有两种选择:您可以使用 DNS-01 验证方式,或(在443端口上)使用 支持 TLS-ALPN-01 验证方式的客户端