web-dev-qa-db-fra.com

Les clients telnet ou netcat peuvent-ils communiquer via SSL?

J'aimerais tester les connexions client avec IMAP sur SSL, HTTPS et d'autres protocoles Internet sécurisés basés sur du texte sur SSL/TLS, de la même manière que j'utiliserais telnet ou netcat si elles n'étaient pas transmises via un protocole sécurisé. Existe-t-il un moyen de forcer telnet ou netcat à passer par SSL/TLS, par exemple avec un tube ou un autre programme?

59
user553702

Il n’existe pas de client Telnet/Netcat - il s’agit de deux programmes distincts et il existe au moins 10 clients Telnet différents et au moins 6 versions différentes de Netcat (netcat d'origine, GNU netcat, OpenBSD netcat, nmap's ncat; j'ai oublié le reste).

Les outils préférés proviennent des bibliothèques TLS elles-mêmes. Ils pourraient être un peu verbeux, cependant.

  • GnuTLS possède un outil client TLS sous Linux:

    gnutls-cli imap.gmail.com -p 993
    

    Utilisez -s pour STARTTLS; vous devrez entrer manuellement les commandes de protocole nécessaires et appuyer sur CtrlD quand prêt.

    Prend en charge IPv6, valide les certificats de serveur par défaut.

  • OpenSSL possède un outil client TLS:

    openssl s_client -connect imap.gmail.com:993
    

    Ceci est disponible pour tous les systèmes d'exploitation. STARTTLS est pris en charge via les options -starttls imap ou -starttls smtp et le programme le négociera automatiquement. (Bien qu'il jette la réponse initiale du serveur après l'avoir fait, mais c'est généralement correct.)

    Seule la version ≥ 1.1 prend en charge IPv6.

    Seule la version ≥ 1.0.2 (IIRC) valide le certificat de serveur par défaut. les anciennes versions nécessitent la spécification manuelle -CApath.

(J'aimerais également disposer d'outils pour tester NSS et SChannel, mais je n'en ai trouvé aucun.)

Les programmes utilisent également les mêmes bibliothèques, mais peuvent avoir moins de boutons de configuration. Certains omettent même les vérifications de certificats homologues par défaut ...

  • socat:

    socat openssl:imap.gmail.com:993 stdio
    

    le mode readline peut être utilisé pour des raisons pratiques:

    socat ssl:imap.gmail.com:993 readline
    

    STARTTLS n'est pas pris en charge.

  • ncat de nmap supporte TLS (mais pas STARTTLS):

    ncat --ssl imap.gmail.com 993
    
  • Certains clients Telnet, tels que le paquet telnet-ssl sur Debian, prennent également en charge TLS:

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

    STARTTLS peut être activé avec starttls à partir du Ctrl] menu d'échappement.

125
grawity

Vous voudrez peut-être regarder openssl s_client , par exemple.

# openssl s_client -connect dummy.com:8443
5
dchampion

Oui, il y a un programme appelé Stunnel

il a un fichier de configuration,

vous lui dites sur quel port écouter, quel port transférer.

cela fonctionne pour le côté client, le côté serveur ou les deux.

il peut donc transformer un serveur qui ne prend pas en charge SSL en un serveur qui le fait.

ou un client qui ne prend pas en charge le SSL, en fait un qui le fait.

ou faire en sorte qu'un client et un serveur aient une connexion ssl.

2
barlop

Il y a aussi sclient ( git ) si vous avez besoin d'un support multiplateforme ( c'est-à-dire Windows).

Créez un serveur local qui ouvre les tls pour example.com

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

Faites une demande à example.com avec telnet

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