Ubuntu 14.04下Apache SSL证书乱码致服务启动失败求助
SSL证书文件出现乱码的原因分析
那些看似乱码的内容,其实是Unix tar归档文件的头部元数据——其中的^@是ASCII空字节,ustar是tar格式的标识,还有文件权限、所有者(root)等信息,说明你的server.crt被错误写入了tar归档的头部内容。
核心原因:logrotate配置或执行异常
这几乎肯定是logrotate(日志轮转工具)的问题,结合你的场景(logrotate触发Apache重启后出问题),可能的情况有:
- Apache的logrotate配置文件(通常在
/etc/logrotate.d/apache2)里,错误把/etc/httpd/server.crt这类证书文件加入了轮转范围。logrotate会对纳入范围的文件做归档压缩,操作异常时就把tar头直接写到了原证书文件里。 - 配置里的
postrotate/prerotate脚本,执行了涉及tar的命令,且错误将输出重定向到了证书文件路径。 - Ubuntu 14.04的logrotate版本较老,若用了
copytruncate这类选项,并发操作下可能出现文件描述符复用错误,把其他操作的内容误写入证书文件。
验证方式
- 打开
/etc/logrotate.d/apache2,检查是否包含证书/密钥文件的路径。 - 查看
/var/log/logrotate.log,找有没有针对server.crt的操作记录。
内容的提问来源于stack exchange,提问作者BioRod
相关产品推荐
相关产品推荐

