Apache2 mod_ssl 在随机时间段后丢失

Apache2 mod_ssl 在随机时间段后丢失

在 Ubuntu 上使用相当典型/标准的 Apache 安装,并启用 mod_ssl,每隔“一段时间”(随机时间段),服务器上的网站就会停止响应。

当我查看原因时,我注意到/etc/apache2/mods-enabled/ssl.confssl.load缺失了。使用这两个命令,我可以立即恢复网站:

a2enmod ssl
service apache2 restart

真是气死人了!肯定是哪里有冲突,但我就是搞不清楚到底在哪里。

Ubuntu 14.04 LTS Apache 2.4.7

虚拟主机配置文件(/etc/apache2/sites-enabled/my-domain.org.conf)

<IfModule mod_ssl.c>
<VirtualHost xxx.xxx.xxx.xxx:443>
    ServerName              my-domain.org
    ServerAlias             www.my-domain.org
    ServerAdmin             [email protected]

    DocumentRoot            /var/www/my-domain.org

    SSLEngine               on
    SSLCertificateKeyFile   /etc/letsencrypt/live/my-domain.org/privkey.pem
    SSLCertificateFile      /etc/letsencrypt/live/my-domain.org/cert.pem
    SSLCertificateChainFile /etc/letsencrypt/live/my-domain.org/chain.pem

    CustomLog               /var/log/apache2/my-domain.org/ssl_access_log vhost_combined
    ErrorLog                /var/log/apache2/my-domain.org/ssl_error_log

    <Directory /var/www/my-domain.org>
            Options         -ExecCGI -Indexes -Includes +FollowSymLinks
            AllowOverride   FileInfo AuthConfig

            RewriteEngine   On
            RewriteBase     /

            RewriteCond     %{HTTP_HOST} ^www\.(.*)$ [NC]
            RewriteRule     ^/(.*)$ https://%1/$1 [R=301,L]

            php_admin_flag  engine on
            php_admin_flag  display_startup_errors on
            php_admin_flag  display_errors on
            php_admin_flag  html_errors on
            php_admin_flag  log_errors on
            php_admin_flag  ignore_repeated_errors off
            php_admin_flag  ignore_repeated_source off
            php_admin_flag  report_memleaks on
            php_admin_flag  track_errors on

            php_value       memory_limit 32M
    </Directory>
</VirtualHost>
</IfModule>

日志输出自/var/log/apache2/my-domain.org/ssl_error_log

[13:35:29.822335] [mpm_prefork:notice] [pid 2043] AH00169: caught SIGTERM, shutting down
[13:35:30.867258] [auth_digest:notice] [pid 2725] AH01757: generating secret for digest authentication ...
[13:35:30.896369] [mpm_prefork:notice] [pid 2725] AH00163: Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.21 OpenSSL/1.0.1f configured -- resuming normal operations
[13:35:30.896406] [core:notice] [pid 2725] AH00094: Command line: '/usr/sbin/apache2'

那里看上去没什么问题。

答案1

Let's Encrypt 会自行安装证书过期自动检查功能,并尝试自行续订。如果能成功,这将是最理想的选择。但是,只有当脚本没有遇到它认为是 Apache 的问题/冲突时,它才会正常工作。

最初,我尝试使用 Let's Encrypt 的自动安装流程:certbot --apache

它从来没有正常工作过,所以我决定使用certbot certonly。无论过程如何,它仍然试图自动更新证书并失败。现在,我不确定整个过程究竟是如何工作的,但这里有解决办法:

找到域的配置文件,/etc/letsencrypt/renewal/my-domain.org.conf并将所有内容注释掉。我认为,如果自动化流程能够顺利运行,--apache它就会发挥作用。目前,我并不一定需要它进行自我更新,因为它可以手动完成。

我希望这对某些人有帮助。它确实对我有帮助。

答案2

请提供您重新启动之前的日志行。

您的 SSL 访问日志可能位于不同的文件夹中。此外,如果您的 SSL.conf 文件位于子文件夹下,请在发生故障时检查其权限。

这些是您可以检查的一些基本事项。有时 mod_ssl lib 无法正常运行,请查看版本是否有任何缺陷等问题。

这也可能是交通拥堵造成的。我现在只能想到这些。

相关内容