安装 SSL 证书后出现 ERR_SSL_PROTOCOL_ERROR

安装 SSL 证书后出现 ERR_SSL_PROTOCOL_ERROR

在完成续订即将过期的 SSL 证书的过程后,我在 Chrome 中查看时收到“ERR_SSL_PROTOCOL_ERROR”错误。经过几个小时的努力,我找到了备份并将我的所有证书文件和配置文件替换回原来的状态,但仍然收到错误。(我的旧证书应该还能再有效几天)

我的错误日志显示了大量条目,包括Invalid method in request \x16\x03\x01。谷歌搜索让我找到了描述如何检查 443 上的输出是否为 HTML 的帖子。我进行了 telnet 会话,可以确认纯文本 html 正在通过端口 443 发送回。

运行 a2enmod ssl 时,系统会提示“模块 ssl 已启用”。这就是我在搜索该日志结果时找到的所有帖子。

还有其他方法可以尝试确保 SSL 正常运行吗?

更新

跑步netstat -lnt我得到...

Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN  

我很难知道我的网站在端口 80 上发生了什么。我的域名在 HSTS 预加载列表中,所以我甚至无法尝试端口 80。

更重要的更新

我最终尝试了五百万零八种随机方法,最终都成功了,但我不知道为什么。

我所做的就是<VirtualHost [my ip address]:443>改变<VirtualHost *:443>

有人能解释为什么这能解决问题吗?我的 IP 地址的版本与昨晚我开始进行更改之前完全一样。我从备份中恢复了文件。我在一些地方读到过,这NameVirtualHost很有VirtualHost用。但我从未添加或删除过包含这些命令的任何内容。

答案1

我进行了 telnet 会话并确认纯文本 html 正在通过端口 443 发送回。

看起来你没有启用 SSL 的服务器在端口 443 上监听。要从您的网站通过端口 443,您必须设置 SSL 连接,而 telnet 不会这样做。要检查 SSL 连接,请使用

openssl s_client -connect example.com:443

请注意,一些正确配置的服务器可能会将 html 发送回端口 443 上的非 https 连接,并给出这样的建议,但我确信 yioou 会注意到这一点,例如

<html>
<head><title>400 The plain HTTP request was sent to HTTPS port</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<center>The plain HTTP request was sent to HTTPS port</center>
<hr><center>nginx</center>
</body>
</html>

答案2

我认为您可能会受益于运行配置检查并查看显示的内容:

sudo apachectl configtest

从您的 netstat 输出来看,httpd 没有运行。

已更新以解释评论中的回应:

好的,这似乎是进步了。你试过吗?是英语之道的建议,使用openssl s_client

相关内容