Verbindung zu https unter Ubuntu nicht möglich - "Unbekannter SSL-Protokollfehler"

2

Ich kann scheinbar keine Verbindung zu einem bestimmten Server über SSL von unseren Ubuntu-Servern aus herstellen. Auf meinem Mac funktioniert es lokal einwandfrei.

Die Serveradresse: powerschool.spokaneschools.org

curl -v https://powerschool.spokaneschools.org Ausgabe:

  • URL neu erstellt zu: https://powerschool.spokaneschools.org/
  • Der Hostname wurde NICHT im DNS-Cache gefunden
  • 206.193.1.72 wird versucht ...
  • Verbunden mit powerschool.spokaneschools.org (206.193.1.72) Port 443 (# 0)
  • erfolgreich gesetzte Zertifikatsüberprüfungspositionen:
  • CAfile: keine CApath: / etc / ssl / certs
  • SSLv3, TLS-Handshake, Client hallo (1):
  • Unbekannter SSL-Protokollfehler in Verbindung mit powerschool.spokaneschools.org:443
  • Locke beim Schließen von Verbindung 0: (35) Unbekannter SSL-Protokollfehler in Verbindung mit powerschool.spokaneschools.org:443

openssl s_client -connect powerschool.spokaneschools.org:443 Ausgabe:

CONNECTED(00000003)
write:errno=104
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 0 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : SSLv3
    Cipher    : 0000
    Session-ID: 
    Session-ID-ctx: 
    Master-Key: 
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1466726411
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
---

Ich habe versucht, die Site mit verschiedenen SSL-Prüftools zu überprüfen. Alle scheinen in Ordnung zu sein (abgesehen von einigen Sicherheitsproblemen). Ich habe keine Probleme mit der Verbindung zu anderen Servern, auch innerhalb dieser Domäne.

OS

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.4 LTS
Release:        14.04
Codename:       trusty

$ curl -V
curl 7.35.0 (x86_64-pc-linux-gnu) libcurl/7.35.0 OpenSSL/1.0.1f zlib/1.2.8 libidn/1.28 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smtp smtps telnet tftp 
Features: AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP 

$ openssl version -a
OpenSSL 1.0.1f 6 Jan 2014
built on: Mon May  2 16:53:18 UTC 2016
platform: debian-amd64
options:  bn(64,64) rc4(16x,int) des(idx,cisc,16,int) blowfish(idx) 
compiler: cc -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
OPENSSLDIR: "/usr/lib/ssl"
Kuf
quelle
Funktioniert gut für mich. Verwenden Sie entweder die Option "-k" für die Wellung, oder geben Sie die Distro- und die Wellversion ("curl -V") an, damit wir das Problem besser verstehen.
jehad
1
@ Jehad hinzugefügt mehr Infos, Hinzufügen -k hatte keine Wirkung. Hast du es geschafft, es auf Ubuntu auszuführen?
Kuf
Ich verwende genau die gleiche Softwareversion wie Sie (Ubuntu Server 14.04.4, Curl 7.35.0, Openssl 1.0.1f) und ich habe auch versucht, auf meinem persönlichen Desktop-Computer LinuxMint 17.3 auszuführen (auf dem auch LinuxMint 17.3 installiert ist) gleiche curl / openssl Komponenten). Mein Ubuntu-Server läuft in einer Virtualbox-VM. Also, ich denke, es könnte an Ihrer Infrastruktur liegen ... Was laufen Ihre Server, ist es ein Cloud-Host, lokale Maschinen? Und gibt es eine Firewall oder einen Proxy? Haben Sie als wissenschaftlichen Test einen Referenztest durchgeführt (z. B. "superuser.com:443" oder "google.com:443")?
jehad
@hatte keinen Proxy, Firewall hat korrekte Ausnahmen (AWS VPC) und die SSL-Verbindung zu allen anderen Servern funktioniert, auch zu anderen Servern in dieser Domäne
Kuf
Es ist schwer zu sagen, was als nächstes zu tun ist, da alles auf ein Problem in Ihrer spezifischen Umgebung hinweist. Wenn alle öffentlichen Server erreichbar sind, dieser jedoch nicht, muss sich in Ihrer AWS-Sicherheitsgruppe ein Tippfehler befinden. Wissen Sie, wie man tcpdump und wireshark? Wenn man Steffen Ullrichs Antworten unten liest, ist er in seiner Analyse korrekt, und ein tcpdump kann helfen, dies zu bestätigen. Weitere grundlegende Experimente ... 1) Versuchen Sie es mit einer anderen VM / VPC (auf Ihrem lokalen Laptop oder in AWS). 2) Klingen Sie vielleicht dumm, aber vergessen Sie das Einrollen.
jehad

Antworten:

1

Dies funktioniert bei mir und sollte auch bei Ihrer curl / openssl-Version funktionieren. errno 104 bedeutet ein Zurücksetzen der Verbindung, daher gehe ich davon aus, dass eine Middlebox wie eine Firewall das Problem verursacht. Prüfen Sie in einem anderen Netzwerk, ob Firewalls vorhanden sind.

Steffen Ullrich
quelle
Ich glaube nicht, dass dies ein Firewall-Problem ist. Ich kann ohne SSL eine Verbindung zu demselben Server herstellen und ich kann eine Verbindung zu anderen Servern in dieser Domäne herstellen, jedoch nicht zu diesem bestimmten. Wenn es sich um ein Firewall-Problem handelte, würde ich erwarten, dass alle Aufrufe dieser Domäne fehlschlagen.
Kuf
@Kuf: Das hängt von der Firewall ab. Wenn es sich um eine Deep Inspection-Firewall handelt, wird das Verbindungsziel in der TLS ClientHello-Nachricht überprüft und blockiert, wenn es nicht gefällt. Da es bei mir mit derselben Version von openssl auf demselben Betriebssystem und derselben Ziel-IP-Adresse funktioniert und die zugrunde liegende TCP-Verbindung funktioniert, der Server (oder die Firewall) jedoch die Verbindung zurücksetzt, muss dies ein Problem in Ihrem Netzwerk sein - oder der Server blockiert Sie.
Steffen Ullrich
Die Server sind in Amazon VPC und die einzige 'Firewall', die wir verwenden, sind die Sicherheitsgruppen, die den gesamten Transport über Port 443 zulassen
Kuf
@Kuf: "SSL-Handshake hat 0 Byte gelesen und 0 Byte geschrieben" - Es sieht so aus, als ob das Zurücksetzen vor dem Senden von ClientHello stattgefunden hat. Es handelt sich also um einen Block auf TCP-Ebene - entweder an Ihrer Firewall oder an einer anderen Firewall vor dem Server .
Steffen Ullrich
Ist es sicher anzunehmen, dass das Problem auf meinem Server auftritt, da es für Sie, aber nicht für mich, funktioniert?
Kuf