在经历更新过期SSL证书的过程之后,在Chrome中查看时,我现在收到“ERR_SSL_PROTOCOL_ERROR”错误。 经过几个小时的苦苦挣扎之后,我find了一个备份,并把我所有的证书文件和configuration文件都恢复到了原来的样子,并且仍然出现错误。 (我的旧证书应该还有效几天)
我的错误日志显示了Invalid method in request \x16\x03\x01条目,包括Invalid method in request \x16\x03\x01 。 谷歌search,让我到post描述如何检查443的输出是否是HTML。 我做了一个telnet会话,可以确认明文html是通过端口443发回。
运行a2enmod ssl给我“模块ssl已经启用”。 这就是我发现search日志结果提到检查的所有post。
还有其他什么方法可以确保SSL正常运行?
UPDATE
运行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 Preload List上,所以我甚至不能尝试80端口。
更重要的更新
我最终尝试的五百万个随机的事情结束了工作,但我不知道为什么。
我所做的只是将<VirtualHost [my ip address]:443>更改为<VirtualHost *:443>
任何人都可以解释为什么这固定的东西? 我的IP地址的版本正是我昨天晚上开始修改之前的样子。 我从备份中恢复了文件。 我在几个地方读到NameVirtualHost和VirtualHost都可以使用。 但我从来没有添加或删除任何包含这些命令的东西。
我做了一个telnet会话,可以确认明文html是通过端口443发回。
它看起来像没有一个启用了SSL的服务器监听端口443.要通过端口443从您的站点获得有效的html, 您必须build立一个SSL连接,而telnet不会这样做。 检查SSL连接使用
openssl s_client -connect example.com:443
请注意,一些正确configuration的服务器可能会发送回到端口443非HTTPS连接的HTMLbuild议只是,但你肯定会注意到,例如
<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>
我想你可能会从运行configuration检查中获益,并看到显示的内容:
sudo apachectl configtest
从你的netstat输出中,httpd没有运行。
已更新,以解释评论中的回应:
好的,这似乎是进步。 你有没有试过@ istheEnglishWay的build议,使用openssl s_client ?