Debian Squeeze 升级破坏了 Apache SSL

PP.*_*PP. 2 debian apache-2.2

我将我的 Debian 从 Lenny 升级到 Squeeze。大错。

现在我得到:

[Tue Feb 08 16:34:57 2011] [error] Server should be SSL-aware but has no certificate configured [Hint: SSLCertificateFile] ((null):0)
Run Code Online (Sandbox Code Playgroud)

到处都是/var/log/apache2/error.log

怎么修?翻阅一堆乱七八糟的论坛,很容易看出 Apache 在 2.2.13 前后改变了它读取配置的方式。伟大的。但对于我或数百万其他 Web 管理员来说,这不是很好,他们现在拥有的 Web 服务器根本无法启动,并且错误消息没有说明问题或如何修复。

其他人真的解决了这个问题吗?我以前使用 SSL 完美运行虚拟服务器(实际上已经好多年了)。

jon*_*n_d 10

此问题是由 apache 2.2.12 更改以支持SNI 引起的

您可以/usr/share/doc/apache2.2-common/NEWS.Debian.gz在服务器上的文件中找到解决问题的所有详细信息:

apache2 (2.2.13-2) 不稳定;紧迫性=高

  • 2.2.12 中添加的对 TLS 服务器名称指示的新支持导致 Apache 对涉及基于名称的 SSL 虚拟主机的某些错误配置更加严格。这可能会导致 Apache 拒绝以记录的错误消息启动:

    服务器应该是 SSL-aware 但没有配置证书 [提示:SSLCertificateFile]

    在 2.2.11 之前,Apache 接受必要的 SSL 配置语句包含在第一个(默认)块中但不包含在后续块中的配置。从 2.2.12 开始,与 SSL 一起使用的每个 VirtualHost 块都必须包含 SSLEngine、SSLCertificateFile 和 SSLCertificateKeyFile 指令(SSLCertificateKeyFile 在某些情况下是可选的)。

    当遇到上述问题时,命令的输出

    egrep -ir '^[^#]*(sslcertificate|sslengine|virtualhost)' \
        /etc/apache2/*conf* /etc/apache2/*enabled
    
    Run Code Online (Sandbox Code Playgroud)

    可能有助于确定需要更改哪些 VirtualHost 部分。

    此外,以前意外工作的构造,如

    <VirtualHost *:80 *:443>
    
    Run Code Online (Sandbox Code Playgroud)

    其中一个虚拟主机定义用于非 ssl 和 ssl 虚拟主机不再工作。你可以达到类似的效果

    <VirtualHost *:80>
    Include /.../vhost.include
    </VirtualHost>
    <VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile ...
    Include /.../vhost.include
    </VirtualHost>
    
    Run Code Online (Sandbox Code Playgroud)

    -- Stefan Fritsch 2009 年 9 月 16 日星期三 20:14:59 +0200

许多软件包的 NEWS.Debian 文件中提供了软件包升级的重要信息。建议安装软件包apt-listchanges以在每次升级时查看此文件中的更改。

  • 你是对的。我在文件中添加了相关条目的副本,并在包存储库中添加了该文件的链接。 (2认同)