Warum funktioniert https nicht?

9

Ich versuche, nur das Stammverzeichnis meiner Website auf https umzuleiten. Obwohl das Umschreiben erfolgt, liefert https nichts. Der Browser sagt. connecting to thinkingmonkey.me...und stagniert.

  • Listen 80 & Listen 443 sind in der conf-Datei vorhanden.
  • Ich habe httpd neu gestartet.
  • Ich verwende die richtige Zertifikatdatei und private Schlüsseldatei.
  • In den httpd-Protokollen und SSL-Protokollen sind keine Fehler vorhanden (ich habe ein separates Protokoll für SSl).
  • Es wurde buchstäblich nichts im SSL-Zugriffsprotokoll protokolliert, selbst wenn ich versuche, direkt auf https://thinkingmonkey.me zuzugreifen .

A netstat -pant | grep httpdhat dies:

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]

Daten neu schreiben:

my-ip - - [24 / Jan / 2012: 19: 01: 14 +0000] [thinkingmonkey.me/sid#7fa2335ceb18 weibl. [rid#7fa2339336d8/initial] (2) init rewrite engine mit angeforderter uri /

my-ip - - [24 / Jan / 2012: 19: 01: 14 +0000] [thinkingmonkey.me/sid#7fa2335ceb18 weibl. [Rid#7fa2339336d8/initial] (1) pass /

my-ip - - [24 / Jan / 2012: 19:01:14 +0000] [thinkingmonkey.me/sid#7fa2335ceb18 weibl. [Rid#7fa2339336d8/initial] (3) [perdir / mysite /] Streifen-Per-Dir-Präfix: / mysite / ->

my-ip - - [ 24 / Jan / 2012: 19: 01: 14 +0000] [thinkingmonkey.me/sid#7fa2335ceb18 weibl. [Rid#7fa2339336d8/initial] (3) [perdir / mysite /] Anwenden des Musters '^ (. *) $' Auf uri ''

my-ip - - [24 / Jan / 2012: 19: 01: 14 +0000] [thinkmonkey.me/sid#7fa2335ceb18 weibl. input = '80 'pattern = '80' => stimmt überein

my-ip - - [24 / Jan / 2012: 19: 01: 14 +0000] [thinkmonkey.me/sid#7fa2335ceb18 weibl. [rid#7fa2339336d8/initial] (4) [perdir / mysite /] RewriteCond: input = ' / 'pattern =' ^ / $ '=> stimmte mit

my-ip überein - - [24 / Jan / 2012: 19: 01: 14 +0000] [thinkingmonkey.me/sid#7fa2335ceb18 weibl. [rid#7fa2339336d8/initial] (2 ) [perdir / mysite /] '' -> ' https://thinkingmonkey.me '

my-ip - - [24 / Jan / 2012: 19: 01: 14 +0000] [thinkingmonkey.me/sid#7fa2335ceb18] neu schreiben [rid # 7fa2339336d8 / initial] (2) [perdir / mysite /] erzwingt explizit die Weiterleitung mit https://thinkingmonkey.me

my-ip - - [24 / Jan / 2012: 19: 01: 14 +0000] [thinkmonkey. me / sid # 7fa2335ceb18] [rid # 7fa2339336d8 / initial] (1) [perdir / mysite /] entkommt https://thinkingmonkey.me zur Weiterleitung

my-ip - - [24 / Jan / 2012: 19: 01: 14 +0000] [thinkingmonkey.me/sid#7fa2335ceb18][rid#7fa2339336d8/initial] (1) [perdir / mysite /] Umleitung auf https: / /thinkingmonkey.me [REDIRECT / 302]

Hier sind meine virtuellen Hosts.

<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 [email protected]
    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)

Was läuft hier falsch?

ThinkingMonkey
quelle
Wie in den Kommentaren zu Ihrer vorherigen Frage erläutert , war Ihr SSL-Listener nur für :::443und nicht bindend 0.0.0.0:443. Ist das noch so? Was bekommen Sie von lsof -i -P | grep 443?
Shane Madden
2
Vielleicht Firewall?
Hubert Kario
@ShaneMadden wurde mit Details aktualisiert: Es wird nur IPv6 angehört. Was muss ich tun, um dies zu ändern?
ThinkingMonkey
@ HubertKario Ich habe noch keine Firewall eingerichtet.
ThinkingMonkey
@ShaneMadden lsof -i -P | grep 80listet auch nur ipv6 auf !!
ThinkingMonkey

Antworten:

13

OK, versuchen Sie dies:

telnet localhost 443

Gibt das eine Antwort oder hängt es? Wenn es reagiert, sollten Sie etwas bekommen, das aussieht wie:

$ telnet localhost 443
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.

(Wenn Telnet nicht installiert ist, installieren Sie es. Sie können die Telnet-Sitzung control-]beenden, indem Sie zum Beenden "q" drücken und dann eingeben.)

Wenn Sie über die lokale Schnittstelle eine Verbindung zum Webserver herstellen können (und der Webserver aufgrund Ihrer Protokolle ausgeführt wird), liegt ein Firewall-Problem vor (ich weiß, dass Sie gesagt haben, dass Sie die Firewall nicht festgelegt haben, dies wird jedoch der Fall sein bestätigen). Führen Sie in diesem Fall Folgendes aus:

iptables -L -n

und poste die Ergebnisse.

Aktualisieren

Aus Kommentaren geht hervor, dass dies eine EC2-Instanz ist. Sehen Sie sich also die Sicherheitsgruppen an, die dieser Instanz zugeordnet sind. Stellen Sie sicher, dass Sie tcp / 443 in Ihren Sicherheitsgruppen zulassen.

So etwas könnte helfen:

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

cjc
quelle
TELNETverbindet gut. iptables -L -ngibt: | Chain INPUT (Richtlinie ACCEPT) | Ziel | prot opt ​​source | Ziel | Kette VORWÄRTS (Richtlinie AKZEPTIEREN) | Ziel | prot opt ​​source | Ziel | Kettenausgang (Richtlinie AKZEPTIEREN) | Ziel | prot opt ​​source | Ziel |
ThinkingMonkey
Gibt es eine andere Firewall, die von Ihrem Provider verwaltet wird? Da alles, was Sie in diesem und dem vorherigen Beitrag gezeigt haben, zeigt, dass Apache korrekt ausgeführt wird und 443 abhört und dass es keine lokale Firewall gibt.
CJC
Ich verwende die ec2-Instanz von Amazon. Ich glaube nicht, dass eine andere Firewall installiert ist.
ThinkingMonkey
1
Oh, Sie verwenden EC2. Überprüfen Sie in diesem Fall die Sicherheitsgruppe. Ja, es gibt eine andere Firewall. Amazon nennt es Sicherheitsgruppen.
Stellen Sie
Blick inAWS Management Console
ThinkingMonkey
2

Auf Dual-Stack-Hosts bedeutet das Abhören von :: 443, dass Sie sowohl IPv4 als auch IPv6 abhören. Testen Sie die TLS-Aushandlung selbst:

openssl s_client -connect localhost:443
[lots of negotiation output, to ensure the basics are there]

Dann können Sie testen, ob HTTP antwortet:

GET / HTTP/1.0

So würde ich umleiten:

<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>

Bitte entfernen RewriteLogund RewriteLogLevelin Produktion, oder es besteht die Gefahr, dass eine Festplatte sinnlos gefüllt wird.

Luis Bruno
quelle
RewriteLogund RewriteLogLevelsind nur für mein Debugging. Es wird entfernt, wenn die Site online geht. openssl s_client -connect localhost:443sagte CONNECTED(00000003)... SSL handshake has read 5857 bytes and written 311 bytesunter New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHAam Ende:Verify return code: 0 (ok)
ThinkingMonkey
2

Ähnliches Problem, Apache2 reagierte auf 443, nichts in den Protokollen

/etc/apache2# openssl s_client -connect localhost:443 -state -debug

gab mir folgendes

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

Das Problem war, dass my.domain.com eine andere IP-Adresse ist als auf den virtuellen Hosts konfiguriert. Als Server werden 2 IPs verwendet. Apache antwortete also auf 443, konnte aber keine Website mit der Verbindung verbinden. passend zur IP ist alles gut

David Granic
quelle
1

Öffnen Sie httpd.confund prüfen Sie, ob die folgende Zeile vorhanden ist:

LoadModule ssl_module modules/mod_ssl.so

Wenn nicht, aktualisieren Sie das httpd.confmit diesem und starten Sie Apache neu.

navin
quelle
Ich habe mein Problem mit gelöst sudo a2enmod ssl. Vielen Dank.
Jin Kwon
0

Es lohnt sich zu überprüfen, welche Art von SSL-Richtlinie Ihr Anbieter anbietet. Nach tonnenweise Debugging stellte ich fest, dass mein Problem dadurch verursacht wurde, dass mein Hosting-Anbieter Port 443 extern sperrte, bis ich sie für ein SSL-Zertifikat bezahlte. Ich hatte geplant, LetsEncrypt zu verwenden, aber ich muss den Host wechseln, bevor ich das tun kann. Wenn keine der anderen Lösungen hilft und Sie sich in einer VPS-Umgebung befinden (oder in einer Umgebung, in der Sie möglicherweise weniger Kontrolle über Ihr Netzwerk haben), lohnt es sich möglicherweise, dies noch einmal zu überprüfen.

Jackson Gabbard
quelle
0

Wenn die SSL-Schlüssel nicht festgelegt sind (oder unerklärlicherweise von Gremlins auskommentiert wurden), schlägt Apache 2.2 SSL stillschweigend fehl. Es wird kein Fehler im Protokoll angezeigt und 443 wird nicht abgehört. Die http: 80-Sites funktionieren.

user3062014
quelle