web-dev-qa-db-ja.com

接続後にOpenSSL s_clientを終了する方法

(レビュアー:私はこれがSuperUserの領域に迷い込んでいることも知っていますが、前の質問が抜け出した場合... :))

これは この質問 とよく似ていますが、Windows(7/8/Server 2008/2012)環境では、OpenSSLのWindowsポートを使用しています。

私は走っています

openssl s_client -connect 192.168.0.1:443

証明書情報を表示するために、コマンドプロンプトから。ただし、opensslはその後ユーザー入力を待ちます。できます Ctrl+C 出力を「壊す」ため、または数文字を入力してReturnキーを押すだけですが、これを自動化する必要があります。私が本当に興味があるのは証明書情報だけです。

前の質問のとおり、接続を終了/閉じる方法が必要です。しかし、私は入力ファイルをパイピングしてみて、echoing/typeing入力をミックスに入れましたが、実際のユーザーをシミュレートするようには見えません。接続後にopensslを強制的に終了させる方法を誰かに教えてもらえますか?

19
KenD

パイプを使用して文字「Q」を渡すことにより、目的の効果を得ることができます。これは、スクリプトの優れた1行になります。

echo "Q" | openssl s_client -connect Host:port

十分に新しいバージョンのBASHを使用している場合は、パイピングの代わりに3つのless-thanリダイレクトを使用することもできます(stdin/stdoutで動作するため、パイプが使用できない場合があります)。

openssl s_client -connect Host:port <<< "Q"
34

空白行の先頭に文字「Q」を入力すると、アクティブな接続が終了します。 s_clientが何も実行しない状態になるのを見てきましたが、これはセッションを終了するための文書化された方法です。

これをバッチモードで実行する場合は、文字「Q」とそれに続く改行を含むテキストファイルを作成し、次のようにコマンドの最後に送ります。

openssl s_client -connect Host:port < Q.txt

私はこれを試してみましたが、うまくいきました。

4
JSAnderson