После обновления истекающего SSL-сертификата я получаю ошибку ERR_SSL_PROTOCOL_ERROR при просмотре в Chrome. После нескольких часов борьбы я нашел резервную копию и заменил все мои файлы сертификатов и файлы conf на их прежнее состояние, и все еще получаю ошибку. (Мой старый сертификат должен быть действителен еще несколько дней)
Мои журналы ошибок содержат множество записей, включая Invalid method in request \x16\x03\x01
. Поиск в Google привел меня к сообщениям, описывающим, как проверить, является ли вывод на 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
может быть полезно. Но я никогда не добавлял и не удалял ничего, что включало эти команды.
Я провел сеанс telnet и могу подтвердить, что простой текст html отправляется обратно через порт 443.
Похоже, у вас нет сервера с поддержкой SSL, который прослушивает порт 443. Чтобы получить действительный HTML-код обратно с твой сайт через порт 443 вам необходимо установить SSL-соединение, а telnet этого не делает. Для проверки SSL-соединения используйте
openssl s_client -connect example.com:443
Обратите внимание, что некоторые правильно настроенные серверы могут отправлять обратно html в соединение без https на порт 443, сообщая только об этом, но я уверен, что заметил бы это, например.
<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>
Я думаю, вам может быть полезно запустить проверку конфигурации и посмотреть, что появится:
sudo apachectl configtest
Как видно из вывода netstat, httpd не запущен.
Обновлено с учетом ответа в комментариях:
Хорошо, это похоже на прогресс. Ты пробовала @istheEnglishWayпредложение, используя openssl s_client
?