You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Apache 2.4 加密套件配置与实际支持范围不匹配问题排查

Apache 2.4 加密套件配置与实际支持范围不匹配问题排查

嘿,我之前也碰到过类似的Apache SSL配置坑,咱们先把问题理清楚:你用Apache 2.4做Tomcat 9.0.88的反向代理,新安装后突然发现Apache拒绝其他Web应用的SSL握手,之前旧环境是正常的。通过客户端测试发现,新环境支持的加密套件大幅缩水——旧环境还支持一堆DHE开头的套件,新环境却只剩ECDHE开头的了,但你的httpd-ssl.conf明明配置了包含DHE的套件列表,这就很奇怪了对吧?

先把新旧环境支持的套件列出来对比下,看得更清楚:

旧安装支持的加密套件

  • DHE-RSA-AES256-GCM-SHA384
  • ECDHE-RSA-AES256-SHA384
  • DHE-RSA-AES256-SHA256
  • ECDHE-RSA-AES128-SHA256
  • DHE-RSA-AES128-SHA256
  • ECDHE-RSA-AES256-SHA
  • DHE-RSA-AES256-SHA
  • ECDHE-RSA-AES128-SHA
  • DHE-RSA-AES128-SHA

新安装支持的加密套件

  • ECDHE-RSA-AES256-SHA384
  • ECDHE-RSA-AES128-SHA256
  • ECDHE-RSA-AES256-SHA
  • ECDHE-RSA-AES128-SHA

而你在httpd-ssl.conf里配置的SSLCipherSuite是:

SSLCipherSuite         AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:

接下来咱们一步步排查可能的原因和解决办法:

1. 最常见的坑:缺少DH参数配置

DHE加密套件需要Apache加载Diffie-Hellman参数文件,新安装的Apache默认不会自动生成这个文件,也不会启用相关配置,导致DHE套件直接被忽略。

解决步骤

  • 先生成DH参数文件(选2048或4096位,4096更安全但生成慢):
    openssl dhparam -out /etc/httpd/conf/dhparam.pem 2048
    
  • 打开httpd-ssl.conf,添加一行配置指向这个文件:
    SSLOpenSSLConfCmd DHParameters "/etc/httpd/conf/dhparam.pem"
    
  • 重启Apache,再测试客户端是否能使用DHE套件握手。

2. OpenSSL版本差异导致的支持变化

新安装的服务器上OpenSSL版本可能和旧环境不一样,比如OpenSSL 3.0+默认收紧了安全策略(SECLEVEL),会禁用一些旧的DHE套件,或者对套件命名规则有变化,导致配置里的DHE套件不被识别。

排查&解决

  • 对比新旧服务器的OpenSSL版本:
    openssl version
    
  • 如果是OpenSSL 3.0+,可以尝试在SSLCipherSuite末尾加上@SECLEVEL=1来放宽安全级别,比如:
    SSLCipherSuite AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:@SECLEVEL=1
    
  • 重启Apache后再测试套件支持情况。

3. 配置被其他地方覆盖了

新安装的Apache可能在其他配置文件(比如虚拟主机配置、额外的SSL配置片段)里有单独的SSLCipherSuite指令,覆盖了httpd-ssl.conf里的设置。

排查步骤

  • 用Apache的配置 dump 命令查看生效的虚拟主机配置:
    apachectl -t -D DUMP_VHOSTS
    
  • 检查所有包含的配置文件,看是否有其他地方定义了SSLCipherSuite

4. 验证配置是否生效

可以用以下工具确认Apache实际支持的套件:

  • openssl s_client测试单个DHE套件:
    openssl s_client -connect your-server-domain:443 -cipher DHE-RSA-AES256-SHA256
    
    如果返回握手成功,说明该套件已启用;如果返回no cipher match,说明还是有问题。
  • 用nmap扫描所有支持的套件:
    nmap --script ssl-enum-ciphers -p 443 your-server-domain
    

按照这几个步骤排查下来,大概率能解决DHE套件不生效的问题,让新环境的加密套件支持范围和旧环境一致。

备注:内容来源于stack exchange,提问作者 RichardFeynman

火山引擎 最新活动