HSTS与SSL证书配置

前言

最近我部署在阿里云的个人网站,因为临时SSL证书过期,导致无法访问。之前刚买完服务器的时候部署配置过Nginx的SSL证书,但是时间过于久远,忘记怎么配置了,所以又重头搜了一下教程,这次归纳总结一下,下次就可以直接照做就好了。

正文

问题背景与故障现象

之前第一次部署网站的时候,随波逐流地在Nginx中设置了SSL证书和HTTPS访问:https://juejin.cn/spost/7604345576176877606

当时不求甚解,跟着教程将HSTS的过期时间配置的很大很大

grep -R "Strict-Transport-Security" /etc/nginx
/etc/nginx/snippets/ssl-params.conf:add_header Strict-Transport-Security "max-age=31536000" always;

所以,当SSL证书过期之后,再使用https访问域名的时候就会出现下面的错误:

您目前无法访问 因为此网站使用了 HSTS。网络错误和攻击通常是暂时的,因此,此网页稍后可能会恢复正常。

HSTS

HSTS是“HTTP Strict Transport Security”的缩写,是一种浏览器安全机制。当服务器通过响应头声明 HSTS 后,浏览器会在指定时间内强制只使用 HTTPS 访问该域名,并且:

  • 不允许回退到 HTTP
  • 即使证书过期、配置错误,也无法手动跳过
  • 策略会被浏览器本地缓存

说人话就是如果浏览器接收到使用 HTTP 加载资源的请求,则必须尝试使用 HTTPS 请求替代。 如果 HTTPS 不可用,则必须直接终止连接。

对于大企业来说,HSTS能够很好的保障连接的安全,防止中间人攻击(仅使用HTTPS)。但是对于我的个人站来说,一旦SSL证书过期(90天/次),整个网站就无法访问。并且,即使我后期在服务端删除了HSTS的配置,之前访问过我个人网站的设备也无法绕过——我的max-age设置的太长了。

操作流程:修复好SSL证书之后,进入服务器更新配置文件

vim /etc/nginx/snippets/ssl-params.conf

# 将max-age修改成0(不删除)
add_header Strict-Transport-Security "max-age=0" always;

nginx -t
systemctl reload nginx

HTTP和HTTPS

HTTP是用于传输网页数据的应用层协议,但它是明文的,存在窃听、篡改、中间人攻击等安全风险。HTTPS则是HTTP的安全版本,通过SSL/TLS协议对传输数据进行加密和身份验证,确保数据在传输过程中的机密性、完整性和真实性。

SSL证书

我的云服务器是阿里云的,SSL证书也是在阿里云申请的免费测试证书,需要90天一续期。届时应前往官网阿里云-计算,为了无法计算的价值,进入数字证书管理服务进行重新申请

申请SSL证书分为3步:

  • 购买证书
  • 申请证书
  • 部署证书

前两部都是在阿里云控制台进行购买和申请的,在此不做赘述,主要是第三步部署:下载适用于不同服务器类型的SSL证书-数字证书管理服务-阿里云

这里我选用的Web服务器是Nginx

在Nginx中部署SSL证书

当申请的证书通过CA验证的时候,就可以在阿里云控制台中进行下载。我这里下载的是适用于Nginx的PEM格式证书,解压后的文件有两个:

  • 【domain name】.pem:证书文件。
  • 【domain name】.key:证书私钥文件

解压后将其上传在服务器的某个地址(建议放在/etc/nginx/cert下面)

修改Nginx配置文件,我的配置文件位于:/etc/nginx/site-enabled/default中,在HTTPS的server块中增加上面证书配置文件的路径

# SSL证书配置 - 根据你的实际文件名修改
ssl_certificate /etc/nginx/cert/[domain name].pem;       # 证书文件
ssl_certificate_key /etc/nginx/cert/[domain name].key;   # 私钥文件

重载Nginx:

nginx -t
systemctl reload nginx

结语

这次遇到的问题本质上并不复杂:SSL证书过期 + 过度配置的HSTS,共同导致了站点的不可访问。

真正的问题在于,当初在配置HTTPS时,对HSTS的理解停留在“安全最佳实践”,却忽略了它对运维稳定性和维护能力的隐含要求。在证书需要手动续期、站点由个人维护的前提下,过长的HSTSmax-age 实际上放大了单点失误的影响范围。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务