web-dev-qa-db-ja.com

telnetまたはnetcatクライアントはSSLを介して通信できますか?

SSL、HTTPS、およびSSL/TLSを介した他の安全なテキストベースのインターネットプロトコルによるクライアント接続をテストしたいのですが、安全なプロトコルを介してトンネリングされていない場合はtelnetまたはnetcatを使用します。 telnetやnetcatがSSLやTLSを通過するようにする方法はありますか(パイプや他のプログラムを使用する場合など)。

59
user553702

Telnet/Netcatクライアントはありません - それらは2つの別々のプログラムです、そして少なくとも10個の異なるTelnetクライアントと少なくとも6個の異なるNetcatバージョンがあります(オリジナルのnetcat、GNU netcat、OpenBSDのnetcat、nmapのncat;残りは忘れていました)

推奨されるツールはTLSライブラリ自体から来ています。しかし、それらは少し冗長かもしれません。

  • GnuTLS LinuxにTLSクライアントツールがあります。

    gnutls-cli imap.gmail.com -p 993
    

    STARTTLSには-sを使用してください。必要なプロトコルコマンドを手動で入力してを押す必要があります。 CtrlD 準備ができたら。

    IPv6をサポートし、デフォルトでサーバー証明書を検証します。

  • OpenSSLにTLSクライアントツールがあります。

    openssl s_client -connect imap.gmail.com:993
    

    これはすべてのオペレーティングシステムで利用可能です。 STARTTLSは-starttls imapまたは-starttls smtpオプションでサポートされており、プログラムは自動的にそれをネゴシエートします。 (そうしてしまうと、最初のサーバーからの応答は捨てられますが、通常は問題ありません。)

    IPv6をサポートするのはバージョン≥1.1だけです。

    デフォルトでバージョン1.0.2(IIRC)のみがサーバー証明書を検証します。古いバージョンでは手動の-CApath指定が必要です。

(NSSとSChannelをテストするためのツールも欲しいのですが、見つけることができませんでした。)

プログラムも同じライブラリを使用しますが、設定ノブが少ないかもしれません。デフォルトでピア証明書チェックをスキップするものさえあります...

  • socat

    socat openssl:imap.gmail.com:993 stdio
    

    readlineモードは便利に使用できます。

    socat ssl:imap.gmail.com:993 readline
    

    STARTTLSはサポートされていません。

  • ncat nmapからはTLSをサポートしています(ただしSTARTTLSはサポートしていません)。

    ncat --ssl imap.gmail.com 993
    
  • Debianのtelnet-sslパッケージなどのTelnetクライアントもTLSをサポートしています。

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

    STARTTLSは、からのstarttlsを使用してアクティブ化できます。 Ctrl] エスケープメニュー。

125
grawity

あなたはopenssl s_clientを見たいかもしれません。

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

ええ、stunnelと呼ばれるプログラムがあります

設定ファイルがあります。

あなたはそれにどのポートをリッスンするか、どのポートに転送するかを伝えます。

クライアント側、サーバー側、またはその両方で機能します。

そのため、sslをサポートしていないサーバーを事実上サポートするサーバーに変えることができます。

またはsslをサポートしていないクライアントから、事実上サポートしているクライアントへ。

または、クライアントとサーバーの両方にSSL接続を設定します。

2
barlop

クロスプラットフォームサポートが必要な場合は、 sclientgit )もあります(すなわちWindows)。

Example.comのtlsを展開するローカルサーバーを作成します。

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

Telnetでexample.comにリクエストを送る

$ 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