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


62

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


回答:


131

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
    

    -sSTARTTLSに使用します。必要なプロトコルコマンドを手動で入力し、CtrlD準備ができたらを押す必要があります。

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

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

    openssl s_client -connect imap.gmail.com:993
    

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

    バージョン≥1.1のみがIPv6をサポートします。

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

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

プログラムも同じライブラリを使用しますが、構成ノブが少ない場合があります。いくつかはデフォルトでピア証明書チェックをスキップします...

  • socat

    socat openssl:imap.gmail.com:993 stdio
    

    便宜上、readlineモードを使用できます。

    socat ssl:imap.gmail.com:993 readline
    

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

  • nmapのncatはTLSをサポートします(STARTTLSはサポートしません):

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

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

    STARTTLSはstarttlsCtrl]エスケープメニューから有効にすることができます。


4
質問者が受け入れられたとマークすることすらしなかったという質問の代わりに、あなたの答えを単純にお気に入りにしたいと思います。
サミッチ14年

gnutls-cliも唯一のようで、これを使用してSTARTLSをIPv6でテストできます。ありがとう!
-karoshi

OpenSSL s_clientは、1.1リリースでIPv6をサポートしています。
-grawity

1
OpenSSLにs_clientは、「R」または「Q」で始まる行がコマンドとして扱われる「便利な」機能があります(マニュアルを参照)。-ign_eofこれを無効にするために使用します。また、s_client検証が失敗しても続行します。「戻りコードを確認してください:0(OK)」と表示されていることを確認し、サーバーがこのメッセージを偽装しようとしないことを願ってください。gnutls-cli可能であれば使用することをお勧めします。
トム

1
幸いにもそれもあり-verify_return_errorます。
-grawity


2

ええ、stunnelというプログラムがあります

構成ファイルがあり、

リッスンするポート、転送するポートを指定します。

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

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

または、SSLをサポートしていないクライアント、事実上サポートしているクライアントに。

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


1

ありますsclientのはgitのあなたは、クロスプラットフォームのサポート(すなわち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 
> 
> 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.