2017-01-24 3 views
0

Ich verwendete CertBot, um ein Let's Encrypt Zertifikat für meine Website zu generieren, aber Yaws gibt mir einen SSL accept failed: timeout Fehler, wenn ich versuche, eine Verbindung herzustellen (nachdem es mal außerhalb natürlich). Interessanterweise funktioniert es, wenn ich example.com auf die lokale IP-Adresse des Servers in der Hosts-Datei auf meinem Computer umleiten und mit verbinden, aber nicht, wenn ich eine Verbindung zu example.com ohne Bearbeitung der Hosts-Datei oder wenn ich von meinem Telefon über 4G verbinden. Hier ist meine Web-Server die Konfigurationsdatei (es ist die einzige Konfigurationsdatei in conf.d):Yaws mit SSL gibt den Fehler "SSL accept failed: timeout"

<server www.example.com> 
    port = 8080 
    listen = 0.0.0.0 
    docroot = /usr/share/yaws 
    <ssl> 
     keyfile = /etc/letsencrypt/live/example.com/privkey.pem 
     certfile = /etc/letsencrypt/live/example.com/fullchain.pem 
    </ssl> 
</server> 

Ich stellte sicher, dass die Schlüsseldatei und das Zertifikat sind beide lesbar durch den Framboesie Benutzer. Neben den Keyfiles ist ein README das enthält folgende Komponenten:

`privkey.pem` : the private key for your certificate. 
`fullchain.pem`: the certificate file used in most server software. 
`chain.pem` : used for OCSP stapling in Nginx >=1.3.7. 
`cert.pem`  : will break many server configurations, and should not be used 
       without reading further documentation (see link below). 
We recommend not moving these files. For more information, see the Certbot 
User Guide at https://certbot.eff.org/docs/using.html#where-are-my-certificates. 

So bin ich relativ sicher, dass ich die richtige Datei verwendet haben (die anderen gab mir Fehler wie badmatch und {tls_alert,"decrypt error"}). Ich habe auch triviale Dinge wie Schreiben https:// vor der URL versucht, aber es hat das Problem nicht behoben, auch funktioniert alles gut, wenn der Server ohne SSL läuft. Die Version von Erlang, die auf meinem Server läuft, ist Erlang/OTP 19. Auch wenn es unklar ist, ist die Domäne nicht wirklich example.com.

Auch example.com wird über cname an examplecom.duckdns.org umgeleitet, wenn das von Bedeutung ist.

UPDATE:

Mein Server wurde auf Port lauscht 8080, dass von dem extern Port weitergeleitet wurde 80, für https-Verbindungen, wenn die Standard-HTTPS-Port-Anschluss ist 443. Mein anderer Fehler war die Verbindung zu http://example.com anstelle von https://example.com. Weiterleiten des externen Ports 443 an den internen Port 8443 und konfigurieren Yaws auf Port 8443 zu hören behoben alles.

Antwort

0

Nur um sicher zu sein, wenn Sie etwas wie curl -v https://example.com:8080 tun, erhalten Sie eine Auszeit, das ist es? (hier https Protokoll und Port 8080 sind natürlich obligatorisch)

SSL-Timeout während der Annahme kann ausgelöst werden, wenn eine unverschlüsselte Anfrage auf einem SSL-vhost erhalten wird.

Könnten Sie auch die Ausgabe des folgenden Befehls bieten:

echo -e "HEAD/HTTP/1.0\r\n\r\n" | openssl s_client -connect mysite.com:8080 -ign_eof 

Und schließlich, welche Version von Yaws sind Sie? auf welchem ​​Betriebssystem?

+0

Es stellte sich heraus, dass ich die Portweiterleitung vermasselt hatte, das Entgoofen das Problem behoben. Ich habe die Details in meinem ursprünglichen Post bearbeitet. – user1792131