在京东云(JD Cloud)环境下为Web服务器(如Nginx/Apache)配置HTTPS证书时,安全组(Security Group)是控制入站/出站流量的关键防火墙策略。正确配置安全组端口是确保HTTPS服务可访问且安全的前提。以下是关键注意事项和推荐配置:
✅ 一、必需开放的端口(入站方向 Ingress)
| 端口 | 协议 | 用途 | 是否必须 | 建议来源 |
|---|---|---|---|---|
| 443 | TCP | HTTPS 加密流量(主服务端口) | ✅ 必须开放 | 0.0.0.0/0(公网访问)或限定可信IP段(如CDN、WAF、企业办公网) |
| 80 | TCP | HTTP 流量(用于自动重定向至HTTPS、Let’s Encrypt ACME HTTP-01 验证) | ⚠️ 推荐开放(尤其使用自动续签时) | 同上;若仅用DNS验证可关闭,但需确保ACME挑战可达 |
🔍 说明:
- Let’s Encrypt 的
certbot默认使用 HTTP-01 验证(需80端口可访问),若关闭80,应改用 DNS-01 验证(需API权限配置DNS记录)。- 强烈建议配置 80 → 443 强制重定向(如 Nginx 中
return 301 https://$host$request_uri;),提升安全性与SEO。
❌ 二、应禁止开放的高危端口(除非业务强依赖)
| 端口 | 风险说明 |
|---|---|
| 22(SSH) | ❗避免对全网开放;应限制为运维IP白名单(如 203.208.60.0/24 或公司固定出口IP) |
| 3306(MySQL)、5432(PostgreSQL)等数据库端口 | ❗严禁公网暴露;应通过VPC内网通信 + 安全组规则限制(仅允许应用服务器IP) |
| 8080/8443/9000等非标Web端口 | 若非必要,不建议开放;统一走443(反向)更安全合规 |
✅ 三、安全组最佳实践(京东云特有建议)
-
最小权限原则
- 入站规则只放行
443(+80),源地址尽量精确(如202.108.0.0/16是京东云CDN节点段,若接入京东云CDN/WAF,可限定为此段)。 - 示例(京东云控制台规则):
方向:入站 协议:TCP 端口范围:443 源IP:202.108.0.0/16(京东云CDN) 或 0.0.0.0/0(公网直连) 描述:HTTPS服务
- 入站规则只放行
-
出站规则(Egress)通常默认全放通,但建议收紧
- 至少开放:
443(用于证书自动续期、时间同步、日志上报等) - 可选开放:
123(UDP,NTP时间同步,确保证书时间有效性)
⚠️ 证书校验严重依赖系统时间准确性!若时间偏差 >5分钟,HTTPS会握手失败。
- 至少开放:
-
关联资源检查
- 确保安全组已绑定到对应云服务器(CVM)实例(在CVM详情页 → 安全组中确认)。
- 若使用负载均衡(SLB):HTTPS卸载应在SLB层完成,后端CVM只需开放
80(HTTP内网通信),安全组无需开放443给公网,由SLB统一处理SSL。
-
配合京东云 WAF/CDN 使用(推荐)
- 将HTTPS卸载前置到京东云WAF或CDN,后端CVM仅用HTTP(内网通信),大幅提升安全性与性能。
- 此时CVM安全组只需开放:
- 入站:
80(来自WAF/CDN内网IP段,如10.0.0.0/8) - 出站:
443(用于WAF管理通信)
- 入站:
- ✅ 优势:隐藏源站IP、防DDoS、自动证书托管、HSTS预加载支持。
🛡 四、HTTPS证书部署额外安全提醒
| 项目 | 建议 |
|---|---|
| 证书格式 | 京东云控制台或Nginx要求 .pem(证书) + .key(私钥),私钥权限设为 600(chmod 600 ssl.key) |
| TLS版本 | 禁用 TLS 1.0/1.1,启用 TLS 1.2/1.3(Nginx 配置:ssl_protocols TLSv1.2 TLSv1.3;) |
| 加密套件 | 优先选用 ECDHE 前向安全套件(如 ECDHE-ECDSA-AES128-GCM-SHA256) |
| HSTS | 添加响应头 Strict-Transport-Security: max-age=31536000; includeSubDomains; preload(启用前确认域名长期HTTPS可用) |
| OCSP Stapling | 启用以提速证书状态验证(Nginx:ssl_stapling on; ssl_stapling_verify on;) |
✅ 快速自查清单(部署前必核)
- [ ] 安全组已添加 443/TCP 入站规则(源IP合理限制)
- [ ] 80/TCP 入站已开放(如使用 certbot 自动续签)
- [ ] SSH(22端口)未对公网开放,或已限制为运维IP白名单
- [ ] CVM 实例已绑定该安全组(控制台确认)
- [ ] 系统时间准确(
timedatectl status,建议启用chronyd或ntpd) - [ ] Web服务器配置了 HTTP→HTTPS强制跳转 和 HSTS头
- [ ] 私钥文件权限为
600,不在Web根目录下可被下载
如需具体配置示例(Nginx HTTPS + 重定向 + 安全头),我可为您生成完整代码片段。也可提供京东云控制台截图指引或CLI命令(jdcloud ec2 authorize-security-group-ingress)。
是否需要? 😊
CLOUD技术笔记