网关安全策略配置HTTPS:保护接口通信的实际操作指南

为什么网关必须启用HTTPS

公司内部系统对外提供服务时,通常会通过API网关统一出口。如果还在用HTTP明文传输,用户的登录凭证、敏感数据就像写在明信片上寄出去,中间任何一个节点都能看到。某次测试环境误将支付接口暴露在HTTP下,不到半天就被爬取了大量订单信息,这就是血的教训。

获取并部署SSL证书

主流做法是使用Let's Encrypt免费证书,或企业购买的商业证书。以Nginx为例,先准备好公钥(.crt)和私钥(.key)文件:

ssl_certificate     /etc/nginx/ssl/your_domain.crt;
ssl_certificate_key /etc/nginx/ssl/your_domain.key;

确保私钥权限为600,防止其他用户读取:

chmod 600 /etc/nginx/ssl/your_domain.key

强制跳转HTTPS

很多用户习惯性输入www开头的地址,这时候要自动重定向。在HTTP监听端口添加301跳转:

server {
    listen 80;
    server_name api.example.com;
    return 301 https://$host$request_uri;
}

配置安全的TLS协议版本

老旧的TLS 1.0和1.1存在已知漏洞,应禁用。推荐只开启TLS 1.2及以上:

ssl_protocols TLSv1.2 TLSv1.3;

同时选择高强度加密套件,避免弱算法被破解:

ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512;

启用HSTS增强防护

即使做了跳转,首次访问仍可能被劫持。加入HSTS响应头,告诉浏览器以后必须用HTTPS连接:

add_header Strict-Transport-Security "max-age=31536000" always;

加上includeSubDomains可以覆盖子域名,但需确认所有子服务都支持HTTPS后再启用。

网关层的其他安全加固点

除了加密传输,网关还应限制请求频率、过滤恶意UA、拦截常见攻击特征。比如用Nginx配合ngx_http_geoip_module识别异常地区IP,或集成OpenResty做更复杂的逻辑判断。

某电商平台就在API网关加了规则:单个IP每秒超过20次请求直接封禁,上线后爬虫流量下降了八成。

定期更新与监控

证书快到期前一周就得准备续签,Let's Encrypt证书只有90天有效期。可以用cron定时执行 renewal 命令:

0 3 * * 6 /usr/bin/certbot renew --quiet

同时把证书过期告警接入企业微信或钉钉,避免因疏忽导致服务中断。