Können die Telnet- oder netcat-Clients über SSL kommunizieren?

46162
user553702

Ich möchte Client-Verbindungen mit IMAP über SSL, HTTPS und andere sichere textbasierte Internetprotokolle über SSL / TLS testen, genauso wie ich Telnet oder netcat verwenden würde, wenn sie nicht über ein sicheres Protokoll getunnelt wären. Gibt es eine Möglichkeit, Telnet oder Netcat dazu zu bringen, SSL / TLS zu durchlaufen, z. B. mit einer Pipe oder einem anderen Programm?

53
Dasselbe gilt für Serverfehler: http://serverfault.com/questions/102032/connecting-to-https-with-netcat-nc Ciro Santilli 新疆改造中心 六四事件 法轮功 vor 9 Jahren 2

4 Antworten auf die Frage

118
grawity

Es gibt keinen Telnet / Netcat-Client - es handelt sich um zwei separate Programme, und es gibt mindestens 10 verschiedene Telnet-Clients und mindestens 6 verschiedene Netcat-Versionen (Original- Netcat , GNU- Netcat , OpenBSD- Netcat , NAPPS; den Rest vergessen).

Die bevorzugten Tools stammen aus TLS-Bibliotheken. Sie könnten jedoch ein bisschen wortreich sein.

  • GnuTLS hat ein TLS-Client-Tool unter Linux:

    gnutls-cli imap.gmail.com -p 993 

    Verwenden Sie -sfür STARTTLS; Sie müssen die erforderlichen Protokollbefehle manuell eingeben und drücken, CtrlDwenn Sie fertig sind.

    Unterstützt IPv6, überprüft Serverzertifikate standardmäßig.

  • OpenSSL verfügt über ein TLS-Client-Tool:

    openssl s_client -connect imap.gmail.com:993 

    Dies ist für alle Betriebssysteme verfügbar. STARTTLS wird über -starttls imapoder -starttls smtpOptionen unterstützt, und das Programm verhandelt es automatisch. (Obwohl es die erste Serverantwort wegwirft, ist es normalerweise in Ordnung.)

    Nur Version ≥ 1.1 unterstützt IPv6.

    Nur Version ≥ 1.0.2 (IIRC) überprüft standardmäßig das Serverzertifikat. ältere Versionen erfordern eine manuelle CA-Pfadangabe.

(Ich hätte auch gerne Werkzeuge zum Testen von NSS und SChannel, konnte aber keine finden.)

Die Programme verwenden auch die gleichen Bibliotheken, verfügen jedoch möglicherweise über weniger Konfigurationsknöpfe. Einige überspringen sogar standardmäßig Peer-Zertifikat-Prüfungen ...

  • socat :

    socat openssl:imap.gmail.com:993 stdio 

    Der readline- Modus kann zur Vereinfachung verwendet werden:

    socat ssl:imap.gmail.com:993 readline 

    STARTTLS wird nicht unterstützt.

  • ncat von nmap unterstützt TLS (aber nicht STARTTLS):

    ncat --ssl imap.gmail.com 993 
  • Einige Telnet-Clients, z. B. das Paket telnet-ssl unter Debian, unterstützen auch TLS:

    telnet-ssl -z ssl imap.gmail.com 993 

    STARTTLS kann über starttlsdas Ctrl]Escape-Menü aktiviert werden .

Ich wünschte, ich könnte Ihre Antwort einfach bevorzugen, anstatt der Frage, dass der Fragesteller sich nicht einmal die Mühe gemacht hat, als akzeptiert zu gelten. Sammitch vor 9 Jahren 4
gnutls-cli scheint auch der einzige zu sein, mit dem ich STARTLS mit IPv6 testen kann. Vielen Dank! karoshi vor 7 Jahren 0
OpenSSL `s_client` unterstützt IPv6 in Version 1.1. grawity vor 7 Jahren 0
@ grawity Ich würde mich sehr freuen, wenn Sie diese ähnliche Frage überprüfen könnten: https://serverfault.com/questions/887224/ssl-unsupported-protocol-error Spring vor 6 Jahren 0
Der `s_client` von OpenSSL hat eine" nützliche "Funktion, bei der Zeilen, die mit R oder Q beginnen, als Befehle behandelt werden (siehe [manual] (https://www.openssl.org/docs/manmaster/man1/s_client.html#CONNECTED- BEFEHLE)). Verwenden Sie `-ign_eof`, um dies zu deaktivieren. 'S_client` wird auch fortgesetzt, wenn die Überprüfung fehlschlägt. Sie müssen überprüfen, ob "Rückgabewert bestätigen: 0 (ok)" angezeigt wird und hoffen, dass der Server nicht versucht, diese Nachricht zu fälschen. Verwenden Sie besser "gnutls-cli" wenn möglich. tom vor 6 Jahren 1
Zum Glück hat es auch "-verify_return_error" dafür. grawity vor 6 Jahren 1
Die Option "-verify_return_error" funktioniert tatsächlich, vorausgesetzt, dass auch "-verify" angegeben ist (dies hat mich ausgelöst, als ich meinen vorherigen Kommentar schrieb). tom vor 6 Jahren 0
5
dchampion

Vielleicht möchten Sie sich den openssl s_client anschauen, z

# openssl s_client -connect dummy.com:8443 
2
barlop

Ja, es gibt ein Programm namens stunnel

es hat eine Konfigurationsdatei,

Sie sagen ihm, an welchem ​​Port Sie hören, an welchen Port weitergeleitet werden soll.

Es funktioniert für die Client- oder Serverseite oder für beide.

So kann es einen Server, der keine SSL-Unterstützung bietet, in einen Server verwandeln, der dies tatsächlich tut.

oder ein Client, der SSL nicht unterstützt, effektiv in einen, der dies tut.

oder machen Sie, dass ein Client und ein Server eine SSL-Verbindung haben.

1
CoolAJ86

Es gibt auch sclient ( git ), wenn Sie plattformübergreifende Unterstützung (zB Windows) benötigen.

Erstellen Sie einen lokalen Server, der tls für example.com entpackt

$ sclient example.com:443 localhost:3000 > [listening] example.com:443 <= localhost:3000 

Fordern Sie mit telnet eine Anfrage an example.com an

$ telnet localhost 3000 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. > GET / HTTP/1.1 > Host: example.com > Connection: close  >  >