--no-check-certificateなしでWGETが続行されます。

--no-check-certificateなしでWGETが続行されます。

複数のボックスが他のサーバーにアクセスできることを確認するために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.com2つの攻撃に対して脆弱になります。

  • 攻撃者に属する無効なIPアドレスを返すDNSに対する攻撃www.example.com
  • 攻撃者がIPアドレスにパケットを送受信できるようにするIPルーティングに対する攻撃www.example.com

ローカルネットワークでこれらの要求を行うと、通常、これらの脅威は問題になりません。適切な物理的なセキュリティがあるか、監視ソフトウェアがだまされているかは重要ではないため、これらの脅威に気を付けない限り、HTTPSは必要ありません。サーバーがHTTPSにのみ応答している場合は、--no-check-certificateこれらの脅威に気を付けない限り使用できます。

Webサーバーが応答しているかどうかをテストするだけの場合、wgetこれは過剰です。代わりに、要求をcurl --head使用して一部のトラフィックを節約できます。これを使用して HTTPS 接続を開始し、TLS 接続内でデータを転送せずにすぐに切断できます。HEADGETopenssl s_client -connect www.example.com:443 </dev/null

おすすめ記事