複数のボックスが他のサーバーにアクセスできることを確認するためにwgetを使用しています。問題は、時々サーバーが自己署名を試み、この場合スクリプトが中断されることです。ただラインで止まる
To connect to www.google.com insecurely, use '--no-check-certificate'.
必要なのは次の行だけなので、 --no-check-certificate を必ずしも実行したくはありません。
Connecting to https://www.google.com|xx.xxx.xxx.xxx... connected
未確認の証明書が必ずしも安全なオプションではないことがわかります。
自己署名証明書を持つサーバーを検出するときにwgetを停止、タイムアウト、またはキャンセルする方法はありますか?
編集:SunOS 10とWGET 1.12を使用していることに言及するのを忘れました。私が使用するwget行の例は次のとおりです。
variable[i]=$(wget -O- --no-http-keep-alive https://www.google.com | grep connected)
答え1
どのセキュリティ属性が必要ですか?
認証された証明書を持つHTTPSは、サーバーが最初に意図されたサーバーであるかどうかの暗号化保証を提供します。このレベルの保証が必要な場合、事前共有されない限り、自己署名証明書は機能しません。事前共有証明書がある場合は、wget
この--ca-certificate
オプションを使用して証明書を渡します。
HTTPSがないと、同様の要求がwget http://www.example.com
2つの攻撃に対して脆弱になります。
- 攻撃者に属する無効なIPアドレスを返すDNSに対する攻撃
www.example.com
。 - 攻撃者がIPアドレスにパケットを送受信できるようにするIPルーティングに対する攻撃
www.example.com
。
ローカルネットワークでこれらの要求を行うと、通常、これらの脅威は問題になりません。適切な物理的なセキュリティがあるか、監視ソフトウェアがだまされているかは重要ではないため、これらの脅威に気を付けない限り、HTTPSは必要ありません。サーバーがHTTPSにのみ応答している場合は、--no-check-certificate
これらの脅威に気を付けない限り使用できます。
Webサーバーが応答しているかどうかをテストするだけの場合、wget
これは過剰です。代わりに、要求をcurl --head
使用して一部のトラフィックを節約できます。これを使用して HTTPS 接続を開始し、TLS 接続内でデータを転送せずにすぐに切断できます。HEAD
GET
openssl s_client -connect www.example.com:443 </dev/null