想要在Qualys SSL Test中拿到A或A+评级,单纯启用HTTPS并配置一张有效证书是远远不够的。Qualys的扫描引擎会从证书信任链完整性、协议版本支持情况、密钥交换算法强度、对称加密套件安全性以及HTTP安全响应头等多个角度进行量化评分,任何一项存在短板都会直接拉低总分。这篇文章不会泛泛而谈,而是把每一个评分点对应的Nginx配置项列出来,并给出经过验证的优化参数,帮你把评级稳定提升到A+。

一、评分维度拆解:搞清楚Qualys到底在检查什么
Qualys SSL Test的评分体系大致分为证书、协议支持、密钥交换、密码强度四个板块。证书部分会检查证书链是否完整、是否由受信任的CA签发、是否过期、是否支持前向保密等。协议支持部分会记录服务器允许的TLS版本,如果仍然开启TLSv1.0或TLSv1.1,评分会明显下降,因为这两个版本已被认为不安全。密钥交换部分关注临时密钥协商方式,使用ECDHE或DHE可以保证前向保密,而静态RSA密钥交换则会被扣分。密码强度部分则根据对称加密算法和MAC算法的组合来打分,弱密码套件如RC4、3DES、CBC模式套件都会拉低评级。
Nginx的配置直接影响这些评分项。比如ssl_protocols指令决定启用哪些TLS版本,ssl_ciphers指定允许的密码套件,ssl_certificate和ssl_certificate_key指定证书文件,而证书链是否正确则完全由运维人员拼接证书文件的方式决定。此外,像HSTS、OCSP Stapling这类增强项虽然不直接属于上述四个板块,但会作为加分项让总分从A提升到A+。理解了这些对应关系,优化就有的放矢。
二、核心配置调整:协议、套件与证书链
首先是协议版本。现代Nginx建议只保留TLSv1.2和TLSv1.3,彻底禁用SSLv3、TLSv1.0和TLSv1.1。这样既能满足Qualys对协议安全性的要求,也能兼容绝大多数现代浏览器。配置很简单,在server块或http块中加入下面这行:
ssl_protocols TLSv1.2 TLSv1.3;
其次是密码套件。需要选择支持前向保密、使用AEAD模式的套件,比如ECDHE+RSA+AES128-GCM-SHA256这类。同时要显式关闭不安全的套件。下面是一组经过筛选的套件列表,兼顾了安全性和兼容性:
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384'; ssl_prefer_server_ciphers on;
证书链也是常见扣分点。证书文件必须包含完整的中间证书,顺序为服务器证书在前,中间证书依次在后。很多管理员只配置了服务器证书,导致Qualys测试报“Chain issues: Incomplete”。可以用文本编辑器将证书按顺序保存到一个文件,或者用cat命令合并。确认ssl_certificate指向这个合并后的文件即可。
三、冲上A+的关键:HSTS、OCSP Stapling与安全响应头
HSTS(HTTP Strict Transport Security)是让评分从A提升到A+的决定性因素之一。它的作用是告诉浏览器在指定时间内强制使用HTTPS访问,避免降级攻击。Nginx中通过add_header指令添加,并且必须加上always参数,否则在错误响应中不会携带该头。推荐的配置如下:
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
这里的max-age至少需要15552000秒(约180天)才能被Qualys认可为有效HSTS,推荐设置为63072000秒(两年)。includeSubDomains表示对所有子域名生效,preload则允许将域名提交到浏览器内置的HSTS预加载列表。注意HSTS一旦开启并提交预加载,浏览器会强制HTTPS,所以需要确保所有子域名都已经支持HTTPS,否则会出现访问失败。
OCSP Stapling(证书状态在线查询装订)可以减少客户端验证证书吊销状态的时间,同时也能在Qualys测试中获得加分。Nginx启用OCSP Stapling需要配置resolver指向可用的DNS服务器,并打开ssl_stapling和ssl_stapling_verify。示例配置如下:
resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 5s; ssl_stapling on; ssl_stapling_verify on;
除此之外,还应当关闭TLS压缩避免CRIME攻击,并合理配置会话缓存。虽然Nginx从1.9.5开始默认关闭TLS压缩,但显式声明ssl_compression off可以让配置意图更清晰。会话缓存建议使用共享内存并设置较短的超时时间,而会话票证如果密钥管理不当可能带来安全风险,很多安全基线建议关闭ssl_session_tickets。
四、常见扣分陷阱与最终验证
即便配置看起来正确,实际测试中仍可能因为一些细节被扣分。比如证书链中中间证书顺序颠倒,Qualys会报“Chain issues: Incorrect order”。解决办法是严格按照“服务器证书、中间证书1、中间证书2、根证书”的顺序拼接。另一个高频问题是HSTS的max-age设置的不足,低于15552000秒将不会被视为有效HSTS。OCSP Stapling如果因为网络问题无法从CA获取响应,会导致装订失败,此时可以检查Nginx错误日志或者使用openssl s_client -status命令验证。
完成所有配置修改后,需要重载Nginx使配置生效,然后重新运行Qualys SSL Test。如果仍然不是A+,可以仔细查看测试报告中的黄色警告项,通常每一项都对应一个可修复的配置问题。多数情况下,只要协议只留TLSv1.2/1.3、密码套件足够强、证书链完整、HSTS参数达标并且OCSP Stapling正常工作,评级就能稳定在A+。建议把这份配置作为基线模板,后续新站点直接复用。
NginxQualys SSL TestSSL配置优化修改时间:2026-10-02 22:12:06