新闻
我们更期待的是,能在与您的沟通交流中获得启迪,
因为这是我们一起经历的时代。
分类
相关文章
热门标签

阿里云waf怎么加证书后如何验证客户端访问与后端回源的双向安全

2026年6月5日

1.

架构概述与目标

• 说明:目标是在客户端到WAF(前端)以及WAF到后端回源(后端)实现双向TLS/证书验证。
• 架构元素:客户端、阿里云WAF(托管证书与回源设置)、后端Origin(Web服务器或负载均衡器)。
• 安全目标:验证客户端证书(可选)+ 验证后端服务证书(必需),并在必要时对回源启用客户端证书(WAF作为客户端)。
• 适用场景:对内网API、管理面板或对接合作方的接口提供双向TLS保障,防止中间人和非法客户端访问。
• 前置要求:拥有域名、WAF实例、后端服务器证书或自签CA、OpenSSL可用以生成测试证书。

2.

证书准备与生成(示例命令)

• 生成自签CA(测试用):openssl genrsa -out ca.key 2048;openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.pem -subj "/C=CN/ST=Beijing/O=ExampleCA/CN=ExampleCA".
• 为域名生成服务端证书:openssl genrsa -out server.key 2048;openssl req -new -key server.key -out server.csr -subj "/CN=www.example.com".
• 用CA签发服务端证书:openssl x509 -req -in server.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out server.crt -days 825 -sha256.
• 生成回源客户端证书(WAF作为客户端证书):openssl genrsa -out client.key 2048;openssl req -new -key client.key -out client.csr -subj "/CN=waf-client".
• 用CA签发客户端证书并合并为PEM:openssl x509 -req -in client.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out client.crt -days 825 -sha256;cat client.crt client.key > client.pem。

3.

在阿里云WAF控制台部署证书步骤

• 登录WAF控制台,选择对应的域名防护策略,进入“证书与监听”或“HTTPS配置”页面。
• 前端(客户端到WAF)证书:上传server.crt与server.key,或选择已购买的证书;启用HTTPS监听(443端口)。
• 如需客户端证书校验(前端双向):在域名配置中启用“客户端证书校验”,上传CA证书(ca.pem)列表以验证客户端证书链。
• 回源(WAF到后端)配置:将回源协议设置为HTTPS,启用“回源证书校验”,并上传后端的CA证书或服务端证书以验证回源服务器。
• 若后端要求WAF提供客户端证书(回源双向):在回源配置中上传client.pem(或client.crt+client.key),使WAF在TLS握手中提供该证书。

4.

回源与双向认证的实现细节

• 回源证书校验:启用后WAF会校验后端证书的CN/SAN和签名链,建议上传后端实际使用的CA链以避免链验证失败。
• 回源客户端证书:WAF在与后端建立TLS连接时会呈现client.pem作为客户端证书,后端必须信任对应CA。
• SNI和Host:确保WAF回源请求带有正确的Host/SNI(控制台有“回源域名”配置),否则后端可能返回默认证书导致校验失败。
• 超时与重试:TLS握手失败会导致回源出错,可通过日志与状态码(5xx)排查,并在WAF中设置合理的超时重试策略。
• 日志与证书过期管理:在WAF中监控证书到期(例如30天前告警),提前更换并测试回归。

5.

验证方法(客户端访问与后端回源的实际命令)

• 验证客户端到WAF(不使用客户端证书):curl -vk https://www.example.com --cacert ca.pem;成功应显示TLS握手并返回HTTP 200/302等。
• 验证前端要求客户端证书:curl -vk https://www.example.com --cacert ca.pem --cert user.crt --key user.key;无证书访问会被拒绝(TLS握手或403)。
• 验证WAF到回源(直接从WAF侧或同网络使用openssl):openssl s_client -connect 192.0.2.10:443 -CAfile ca.pem -showcerts;检查证书链与CN。
• 验证回源双向:openssl s_client -connect 192.0.2.10:443 -cert client.crt -key client.key -CAfile ca.pem;若成功会完成握手并显示“Verify return code: 0 (ok)”。
• 实测示例输出(成功行):--- Certificate chain ---;subject=/CN=origin.example.com;verify return code: 0 (ok)。

6.

真实案例与服务器配置举例

• 案例背景:金融内网API,通过WAF对外暴露域名www.example.com,WAF校验合作方客户端证书并对接内网后端origin。
• WAF实例ID:waf-abcdef123456;域名:www.example.com;回源域名:origin.internal.example.com。
• 后端服务器配置示例:Nginx 1.18,listen 443 ssl;ssl_certificate /etc/ssl/server.crt;ssl_certificate_key /etc/ssl/server.key;ssl_client_certificate /etc/ssl/ca.pem;ssl_verify_client on;
• 示例OpenSSL指纹(SHA256):server.crt -> 3A:7F:9B:...:D4(仅展示部分),用于在WAF回源证书校验时对照。
• 下表为该案例的核心配置汇总:
项目值示例
域名www.example.com
WAF实例IDwaf-abcdef123456
回源IP192.0.2.10
回源端口/协议443 / HTTPS
前端证书server.crt / server.key
回源客户端证书client.pem(含key)

7.

监控、日志与常见问题排查

• 监控点:WAF访问日志、回源状态码(5xx)、TLS握手失败率、证书即将过期告警。
• 常见问题1:回源握手失败 -> 检查SNI/Host、是否上传正确CA、证书链完整性与时间有效性。
• 常见问题2:客户端被拒绝 -> 如果启用了客户端证书校验,检查上传的CA是否包含签发客户端证书的根/中间CA。
• 日志排查:从WAF控制台下载访问与错误日志,匹配时间点使用openssl或curl重现并记录握手debug日志(-vvv)。
• 运营建议:生产环境使用受信任CA证书,定期轮换证书并在WAF上进行灰度切换与回归测试,确保零中断。

云WAF