--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.com두 가지 공격에 취약해집니다.

  • 공격자에게 속한 잘못된 IP 주소가 반환되도록 하는 DNS에 대한 공격입니다 www.example.com.
  • 공격자가 IP 주소로 패킷을 수신하고 보낼 수 있도록 하는 IP 라우팅에 대한 공격입니다 www.example.com.

로컬 네트워크에서 이러한 요청을 하는 경우 일반적으로 이러한 위협은 문제가 되지 않습니다. 적절한 물리적 보안이 있거나 모니터링 소프트웨어가 속이는지 여부가 중요하지 않기 때문에 이러한 위협에 신경 쓰지 않는다면 HTTPS가 필요하지 않습니다. 서버가 HTTPS에만 응답하는 경우 --no-check-certificate이러한 위협에 신경 쓰지 않으면 사용할 수 있습니다.

웹 서버가 응답하는지 여부만 테스트하려는 경우 wget이는 과잉입니다 . 대신 요청을 curl --head사용 하여 일부 트래픽을 절약 할 수 있습니다 . 이를 사용하여 HTTPS 연결을 시작하고 TLS 연결 내에서 데이터를 전송하지 않고 즉시 연결을 끊을 수 있습니다.HEADGETopenssl s_client -connect www.example.com:443 </dev/null

관련 정보