使用 Lets Encrypt SSL 证书配置 Apache 会导致“SSL_ERROR_RX_RECORD_TOO_LONG”

使用 Lets Encrypt SSL 证书配置 Apache 会导致“SSL_ERROR_RX_RECORD_TOO_LONG”

我在 Raspian(Raspberry Pi)服务器上运行 Apache 2.4.25。

我想为服务器设置 SSL 证书,因此我运行了以下命令来获取certbot

sudo apt-get update
sudo apt-get install python-certbot-apache

然后我certbot像这样跑:

sudo certbot certonly --standalone -d marksfam.com -d www.marksfam.com

这告诉我它已将我的证书放入文件夹/etc/letsencrypt/live/marksfam.com。我检查并确认它已在其中创建了文件fullchain.pemprivkey.pem,以及cert.pemchain.pem和。可能值得注意的是(但我不这么认为) - 我只能在正常帐户无法查看的README情况下查看此文件夹。sudo

不管怎样,我将其符号链接mods-available/ssl.load到了 apache 的mods-enabled目录sites-available/default-ssl.confsites-enabled

我里面default-ssl.conf有这个:

<IfModule mod_ssl.c>
     <VirtualHost marksfam.com:443>
         ServerName www.marksfam.com
         ServerAdmin webmaster@local
         DocumentRoot /var/www/html
         ErrorLog ${APACHE_LOG_DIR}/error.log
         SSLEngine on
         SSLCertificateFile    /etc/letsencrypt/live/marksfam.com/fullchain.pem
         SSLCertificateKeyFile /etc/letsencrypt/live/marksfam.com/privkey.pem
    </VirtualHost>
</IfModule>

然后我用 重新启动服务器sudo service apache2 restart

访问http://marksfam.com运行良好。访问https://marksfam.com不行。在 Firefox 中,我收到以下消息:

连接到 www.marksfam.com 时发生错误。SSL 收到的记录超出了允许的最大长度。错误代码:SSL_ERROR_RX_RECORD_TOO_LONG

在 Chrome 中,我收到以下消息:

此站点无法提供安全连接 www.marksfam.com 发送了无效响应。请尝试运行 Windows 网络诊断。ERR_SSL_PROTOCOL_ERROR

Chrome 和 Firefox 都没有在其检查器的控制台选项卡下告诉我任何信息...没有任何消息提示我更多有关我做错的事情。

如果我检查 apache 的 error.log 文件,我看到的只是:

[mpm_event:notice] AH00491: caught SIGTERM, shutting down
[ssl:warn] AH01873: Init: Session Cache is not configured [hint: SSLSessionCache]
[mpm_event:notice] AH00489: Apache/2.4.25 (Raspian) OpenSSL/1.0.21 mod_wsgi/4.5.11 Python/2.7 confiured -- resuming normal operations
[core:notice] AH00094: Command line: '/usr/sbin/apache2'

知道我做错了什么吗?似乎没有给出有用的错误消息。端口 80 和 443 都转发到已启动并运行的服务器,如果您想尝试自己在 marksfam.com 上访问它们。无论我尝试访问https://marksfam.com或者https://www.marksfam.com或者https://192.168.0.2(当我与它位于同一本地网络上时,它是本地地址。)

如果我分享的还不够多,我很乐意分享更多的日志或配置细节。

答案1

您的服务器中有些配置不正确,我认为这不在您显示的部分服务器配置中。尝试访问您的服务器显示它正在端口 443 上接受纯 HTTP 请求,即它应该只期望 TLS 流量的端口。因此,我认为您在端口 443 上有一些其他 VirtualHost 或一些默认配置,这些配置未启用 SSL 或未配置证书。但您不能在同一个 IP 和端口上混合使用纯 HTTP 和 HTTPS。

也可以看看Debian 服务器 SSL 证书配置返回 err_ssl_protocol_error可能存在类似的问题。

相关内容