Назад | Перейти на главную страницу

Почему не работает https?

Я пытаюсь перенаправить только корень своего сайта на https. Хотя перезапись происходит, https ничего не дает. Браузер говорит. connecting to thinkingmonkey.me... и застаивается.

  • Слушай 80 & Слушайте 443 присутствуют в файле conf.
  • Я перезапустил httpd.
  • Я использую правильный файл сертификата и файл закрытого ключа.
  • Ошибок нет в журналы httpd, Журналы SSL (У меня есть отдельный журнал для SSl).
  • Буквально ничего не записывалось в журнал SSL-доступа, даже если я попытаюсь получить доступ к https://thinkingmonkey.me прямо.

А netstat -pant | grep httpd имеет это:

Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name  
tcp        0      0 :::443                      :::*                        LISTEN      1334/httpd          
tcp        0      0 :::80                       :::*                        LISTEN      1334/httpd   

.htaccess:

RewriteEngine on
RewriteBase /

RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^(.*)$ https://thinkingmonkey.me [L,R=302]

перезаписать данные журнала:

my-ip - - [24 января 2012 г .: 19: 01: 14 +0000] [Thinkmonkey.me/sid#7fa2335ceb18 visible[rid#7fa2339336d8/initial] (2) механизм перезаписи инициализации с запрошенным uri /

my-ip - - [24 / Янв / 2012: 19: 01: 14 +0000] [Thinkmonkey.me/sid#7fa2335ceb18 impression[rid#7fa2339336d8/initial] (1) пройти через /

my-ip - - [24 / Jan / 2012: 19: 01: 14 +0000] [Thinkmonkey.me/sid#7fa2335ceb18 visible[rid#7fa2339336d8/initial] (3) [perdir / mysite /] удалить префикс для каждого каталога : / mysite / ->

my-ip - - [24 / января / 2012: 19: 01: 14 +0000] [Thinkmonkey.me/sid#7fa2335ceb18 visible[rid#7fa2339336d8/initial] (3) [perdir / mysite /] применение шаблона '^ ( . *) $ 'в uri' '

my-ip - - [24 января 2012 года: 19: 01: 14 +0000] [Thinkmonkey.me/sid#7fa2335ceb18 visible[rid#7fa2339336d8/initial] (4) [perdir / mysite /] RewriteCond: input = ' 80 'pattern = '80' => соответствует

my-ip - - [24 января 2012 года: 19: 01: 14 +0000] [Thinkmonkey.me/sid#7fa2335ceb18 visible[rid#7fa2339336d8/initial] (4) [perdir / mysite /] RewriteCond: input = ' / 'pattern =' ^ / $ '=> соответствует

my-ip - - [24 / Янв / 2012: 19: 01: 14 +0000] [Thinkmonkey.me/sid#7fa2335ceb18 visible[rid#7fa2339336d8/initial] (2) [perdir / mysite /] rewrite '' -> 'https://thinkingmonkey.me'

my-ip - - [24 января 2012 года: 19: 01: 14 +0000] [Thinkmonkey.me/sid#7fa2335ceb18 visible[rid#7fa2339336d8/initial] (2) [perdir / mysite /] явно принудительное перенаправление с https://thinkingmonkey.me

my-ip - - [24 января 2012 г .: 19: 01: 14 +0000] [Thinkmonkey.me/sid#7fa2335ceb18 visible[rid#7fa2339336d8/initial] (1) [perdir / mysite /] экранирование https://thinkingmonkey.me для перенаправления

my-ip - - [24 января 2012 г .: 19: 01: 14 +0000] [Thinkmonkey.me/sid#7fa2335ceb18 visible[rid#7fa2339336d8/initial] (1) [perdir / mysite /] перенаправить на https://thinkingmonkey.me [REDIRECT / 302]

Вот мои виртуальные хосты.

<VirtualHost *:80>
     ServerName thinkingmonkey.com
     ServerAlias www.thinkingmonkey.com  www.thinkingmonkey.me

     RewriteEngine on
     RewriteCond %{HTTP_HOST} ^(www\.)?thinkingmonkey\.(com|me)$ [NC]
     RewriteRule ^ http://thinkingmonkey.me%{REQUEST_URI} [L,R=301]
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot /mysite/
    ServerName thinkingmonkey.me
    ErrorLog logs/site-error_log
    CustomLog logs/site-access_log common
    RewriteEngine On
    RewriteLog "/var/log/rewrite.log"
    RewriteLogLevel 3
</VirtualHost>

<VirtualHost *:443>

ServerName thinkingmonkey.me

ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn

SSLEngine on

SSLProtocol all -SSLv2

SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW


SSLCertificateFile /path/to/my.crt
SSLCertificateKeyFile /path/to/my.key
SSLCertificateChainFile /path/to/my.ca-bundle


<Files ~ "\.(cgi|shtml|phtml|php3?)$">
    SSLOptions +StdEnvVars
</Files>
<Directory "/var/www/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>
SetEnvIf User-Agent ".*MSIE.*" \
     nokeepalive ssl-unclean-shutdown \
     downgrade-1.0 force-response-1.0

CustomLog logs/ssl_request_log \
      "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

</VirtualHost>

lsof -i -P | grep 443
httpd    1334     root    6u  IPv6   3297      0t0  TCP *:443 (LISTEN)
httpd    1335   apache    6u  IPv6   3297      0t0  TCP *:443 (LISTEN)
httpd    1336   apache    6u  IPv6   3297      0t0  TCP *:443 (LISTEN)
httpd    1337   apache    6u  IPv6   3297      0t0  TCP *:443 (LISTEN)
httpd    1338   apache    6u  IPv6   3297      0t0  TCP *:443 (LISTEN)
httpd    1339   apache    6u  IPv6   3297      0t0  TCP *:443 (LISTEN)
httpd    1340   apache    6u  IPv6   3297      0t0  TCP *:443 (LISTEN)
httpd    1341   apache    6u  IPv6   3297      0t0  TCP *:443 (LISTEN)
httpd    1342   apache    6u  IPv6   3297      0t0  TCP *:443 (LISTEN)

Что здесь не так?

ОК, попробуйте это:

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", чтобы выйти)

Если вы можете подключиться к веб-серверу через локальный интерфейс (и веб-сервер работает, учитывая ваши журналы), значит, существует проблема с брандмауэром (я знаю, вы сказали, что не установили брандмауэр, но это будет подтвердить). В этом случае запустите:

iptables -L -n

и опубликуйте результаты.

Обновить

Судя по комментариям, это экземпляр EC2, поэтому посмотрите группы безопасности, связанные с этим экземпляром. Убедитесь, что вы разрешаете tcp / 443 в своих группах безопасности.

Что-то вроде этого может помочь:

http://cloud-computing.learningtree.com/2010/09/24/understanding-amazon-ec2-security-groups-and-firewalls/

Аналогичная проблема, 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 все хорошо

На хостах с двойным стеком прослушивание :: 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.

Стоит дважды проверить, какую политику SSL предлагает ваш провайдер. После тонны отладки я обнаружил, что моя проблема вызвана тем, что мой хостинг-провайдер заблокировал порт 443 извне, пока я не заплатил им за сертификат SSL. Я планировал использовать LetsEncrypt, но мне придется сменить хост, прежде чем я смогу это сделать. В любом случае, если ни одно из других решений не помогает и вы находитесь в среде VPS (или в любой среде, где у вас может быть меньше контроля над своей сетью), возможно, стоит дважды проверить это.

Если ключи SSL не установлены (или были необъяснимо закомментированы гремлинами), Apache 2.2 SSL автоматически завершится ошибкой. В журнале не будет ошибок, и он не будет прослушивать 443. Сайты http: 80 будут работать.