web-dev-qa-db-ja.com

opensslがハングして終了しない

Opensslを使用して証明書を取得しようとしていますが、ハングし続けているようです。私は多くの調査を行いましたが、利用可能なオプションのすべてがWindowsで機能するようには見えません。

openssl s_client -showcerts -connect google.com:443 > cert.txt

私はこれを試しました:

openssl s_client -connect xyz:443 < quit.txt > cert.txt

どこ quit.txtには http://bytes.com/topic/php/answers/8802-automate-openssl-s_client-command-batch-php-script の「quit\n」が含まれています

それはうまくいきませんでした。 Openssl s_clinet -connect scripting。Force quit help も確認しました

私も試しました-prexit

私もこれを調べましたが、機能させることができません: https://serverfault.com/questions/139728/how-to-download-ssl-certificate-from-a-website

元気でした!私は無理だと思ったことをなんとか実行し、このバグのような単純なことで、とりあえず私を止めることができました:(

41
Adiboy

Windows向けの一部のOpenSSLディストリビューションは、標準入力に関係なく、追加のキープレスを期待しているようです。 Quit.txtはopensslのSTDIN(サーバーはQUITコマンドを受信します)に正しくパイプされますが、キーを押すまで何も起こりません。

この問題は、OpenSSLの Cygwin's バージョンには存在しません。残念ながら、Cygwinの基本インストールには約100 MBのディスク容量が必要ですが、openssl.exeと必要なライブラリのみを抽出することもできます。

この方法は機能します:

echo QUIT | c:\cygwin\bin\openssl.exe s_client -showcerts -connect google.com:443 > cert.txt
22
MBu

Windowsでは、opensslコマンドでうまくいく前にwinptyと入力するだけです。したがって、たとえば、次のような証明書を作成できます。

winpty openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days XXX

78
Glenn Werner

Windowsのmingw64で実行している場合は、winptyプログラムを使用して端末を正しくラップできます。

たとえば、bashエイリアスopenssl = 'winpty openssl.exe'の下にエイリアスを作成します

次に、openssl s_client -connect blah

期待どおりに動作するはずです

8
crafty

完全に理解できない理由により、QUITまたはquitの入力へのエコーは私の場合は機能しませんでした。 Windows 8.1でOpenSSL 1.0.2dを使用してMINGW64を使用しています。opensslを使用して、bashスクリプト内のサーバーから証明書を取得しています。ただし、opensslコマンドをバックグラウンドで実行し、少し待つだけでうまくいきました。

#!/bin/bash

openssl s_client -connect my.server.com:443 -showcerts > output.txt 2>/dev/null &
sleep 2
2
k6ps