Я задал подобный вопрос на Hacker News.
(Свободные) компоненты с открытым исходным кодом:
Саморазмещенные решения (полная версия не является бесплатной):
Размещенные третьей стороной решения (полная версия не является бесплатной):
Хорошо, попробуйте следующее:
telnet localhost 443
Это дает ответ или зависает? Если он отвечает, вы должны получить что-то вроде:
$ telnet localhost 443
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
(если telnet не установлен, установите его; вы можете выйти из сеанса telnet, нажав control -]
, а затем набрав «q» для quit)
Если вы можете подключиться к веб-серверу через локальный интерфейс (и веб-сервер работает, учитывая ваши журналы), значит, проблема с брандмауэром (я знаю, вы сказали, что не установили firewall, но это подтвердит). В этом случае запустите:
iptables -L -n
и опубликуйте результаты.
Обновление
Судя по комментариям, это экземпляр EC2, поэтому просмотрите группы безопасности, связанные с этим экземпляром. Убедитесь, что вы разрешаете tcp / 443 в ваших группах безопасности.
Может помочь что-то вроде этого:
На хостах с двойным стеком прослушивание :: 443 означает, что вы слушаете и IPv4, и IPv6. Протестируйте согласование TLS самостоятельно:
openssl s_client -connect localhost:443
[lots of negotiation output, to ensure the basics are there]
Затем вы сможете проверить, отвечает ли HTTP:
GET / HTTP/1.0
Вот как я перенаправляю:
<VirtualHost *:80>
ServerName mail.example.com
RewriteEngine On
RewriteLog /var/log/apache2/rewrite.log
RewriteLogLevel 4
RewriteRule ^(.*)$ https://secure.example.com/mail$1 [R,L]
</VirtualHost>
Удалите RewriteLog
и RewriteLogLevel
в процессе производства, иначе вы рискуете бессмысленно заполнить диск.
Откройте httpd.conf
и посмотрите, присутствует ли следующая строка:
LoadModule ssl_module modules/mod_ssl.so
Если нет, то обновите httpd.conf
этим и перезапустите Apache.
Аналогичная проблема, apache2 отвечал на 443, ничего в журналах
/etc/apache2# openssl s_client -connect localhost:443 -state -debug
не дало мне следующего
SSL_connect:unknown state
read from 0x1182fe0 [0x1189010] (7 bytes => 7 (0x7))
0000 - 48 54 54 50 2f 31 2e HTTP/1.
SSL_connect:error in unknown state
139790287365792:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:795:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 295 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
, проблема заключалась в том, что my.domain.com - это другой IP-адрес, чем был настроен в виртуальные хосты. В качестве сервера используется 2 IP. поэтому apache отвечал на 443, но не мог подключить веб-сайт к соединению. соответствует IP все в порядке
Стоит дважды проверить, какую политику SSL предлагает ваш провайдер. После тонны отладки я обнаружил, что моя проблема вызвана тем, что мой хостинг-провайдер заблокировал порт 443 извне, пока я не заплатил им за сертификат SSL. Я планировал использовать LetsEncrypt, но мне придется сменить хост, прежде чем я смогу это сделать. В любом случае, если ни одно из других решений не помогает и вы находитесь в среде VPS (или в любой среде, где у вас может быть меньше контроля над своей сетью), возможно, стоит дважды проверить это.
Если ключи SSL не заданы (или были необъяснимо закомментированы гремлинами), Apache 2.2 SSL автоматически завершится ошибкой. В журнале не будет ошибок, и он не будет прослушивать 443. Сайты http: 80 будут работать.