Apache日志中的SSL证书问题排查与修复
一、快速定位思路
二、常见报错与修复对照表
| 日志关键词/错误码 | 含义 | 快速修复 |
|---|---|---|
| AH00526 Syntax error on line xx | 配置语法错误,常见于依赖模块未加载 | 在 httpd.conf 取消注释:LoadModule socache_shmcb_module modules/mod_socache_shmcb.so;执行 apachectl configtest 后再重启 |
| AH01873 Init: Session Cache is not configured | 未配置SSL会话缓存,影响性能 | 在 SSL 配置段加入:SSLSessionCache “shmcb:/www/server/apache/logs/ssl_scache(512000)” 与 SSLSessionCacheTimeout 300 |
| SSL Library Error: -8181 Certificate has expired | 证书已过期(常见于 mod_nss) | 临时在 nss.conf 加入 NSSEnforceValidCerts off 启动服务;随后用 certutil -d /etc/httpd/alias -L -n Server-Cert 查看并更新证书,最后移除临时开关 |
| Server user apache lacks read access to NSS key database /etc/httpd/alias/key3.db | NSS 数据库权限不足 | 将 /etc/httpd/alias/*.db 属主设为 root:apache,权限 0640:chown root:apache /etc/httpd/alias/*.db && chmod 0640 /etc/httpd/alias/*.db |
| AH02565: Certificate and private key example.com:443 do not match | 证书与私钥不匹配 | 对比 MD5(modulus),重新匹配正确的密钥与证书文件 |
| 浏览器提示 NET::ERR_CERT_AUTHORITY_INVALID | 证书链不完整 | 使用 fullchain(包含服务器证书+中间证书),或合并:cat cert.pem intermediate.pem > fullchain.pem |
| 访问国密站点失败但国际证书正常 | 未加载国密模块/OpenSSL | 确认已安装并加载 Wosign 国密模块/国密版 OpenSSL 1.1.1g,否则系统默认 OpenSSL 1.0.2k 无法处理 SM2 |
三、关键配置与命令清单
LoadModule socache_shmcb_module modules/mod_socache_shmcb.soSSLSessionCache "shmcb:/www/server/apache/logs/ssl_scache(512000)"
SSLSessionCacheTimeout 300
SSLCertificateFile /etc/ssl/certs/example.com/fullchain.pem
SSLCertificateKeyFile /etc/ssl/private/example.com/privkey.pem
SSLCertificateChainFile /etc/ssl/certs/example.com/chain.crt
chmod 600 /path/to/privkey.pem && chown root:root /path/to/privkey.pemopenssl x509 -in server.crt -noout -datesopenssl verify -CAfile ca_bundle.crt server.crtopenssl rsa -noout -modulus -in privkey.pem | openssl md5 与openssl x509 -noout -modulus -in server.crt | openssl md5apachectl configtest 或 httpd -tss -tulpen | grep :443 或 netstat -tuln | grep 443四、国密证书专项排查
五、仍无法解决时的建议
ssl_certificate)于 Apache;两者语法与文件要求不同。