Apache中配置密码套件与证书链的核心是选对加密算法和摆正证书顺序:需禁用SSLv2/v3及TLSv1.0/1.1,限定ECDHE-AES-GCM类强套件并启用SSLHonorCipherOrder;证书链须将域名证书与中间证书按序合并为single fullchain.crt文件,根证书无需包含。

Apache 中配置密码套件与证书链,核心是两件事:选对加密算法、摆正证书顺序。配错密码套件会导致老浏览器打不开或现代浏览器报 ERR_SSL_VERSION_OR_CIPHER_MISMATCH;证书链缺一环,用户访问时就会看到“连接不安全”警告——哪怕私钥和域名证书都放对了。
密码套件配置:禁用老旧协议,限定强算法
Apache 默认可能启用 SSLv2/v3 或弱加密算法(如 RC4、DES),必须主动关闭并指定安全范围。关键配置在虚拟主机或 httpd-ssl.conf 中:
-
禁用不安全协议:
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1(推荐只留 TLSv1.2 和 TLSv1.3,兼容性够且安全) -
设定高强度密码套件:
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384优先使用前向保密(ECDHE)、AES-GCM 模式,排除含 EXPORT、RC4、MD5、SHA1 的套件 -
启用服务器密码优先(避免客户端弱套件被选中):
SSLHonorCipherOrder on
证书链配置:不是“多个文件”,而是“一个完整信任路径”
Apache 的 SSLCertificateFile 指令只接受一个文件,但它必须包含**服务器证书 + 所有中间证书**(按顺序拼接),根证书通常不用放——浏览器已内置。常见错误是把中间证书单独配在 SSLCertificateChainFile(旧版 Apache 才需要),新版更推荐合并。
- 把你的域名证书(如
example.com.crt)和中间证书(如intermediate.crt)用文本编辑器**按顺序合并**:先写域名证书内容,换行后紧贴粘贴中间证书内容,保存为fullchain.crt - 配置中只用这一行:
SSLCertificateFile /etc/ssl/example.com/fullchain.crt - 私钥保持独立:
SSLCertificateKeyFile /etc/ssl/example.com/private.key - 权限必须严格:
chmod 600 /etc/ssl/example.com/private.key
Apache 主进程读取私钥时若权限宽松会拒绝启动
验证是否生效:三步快速确认
改完配置别急着重启,先做基础检查:
- 运行
apachectl configtest,确保语法无误 - 重启服务:
systemctl restart apache2(Ubuntu)或systemctl restart httpd(CentOS/RHEL) - 用在线工具(如 SSL Labs 的 SSL Test)扫描域名,它会明确告诉你:密码套件是否启用 TLS 1.3、证书链是否完整、是否存在签名算法不兼容等问题


















