비대화형(스크립트에서)으로 openssl에 대한 SSL/tls 연결을 확인하는 방법은 무엇입니까?

비대화형(스크립트에서)으로 openssl에 대한 SSL/tls 연결을 확인하는 방법은 무엇입니까?

내가 실행할 때 :

openssl s_client -connect google.com:443
openssl s_client -connect government.ru:443

openssl이는 나에게 귀중한 출력을 제공하지만 다음과 같은 작업을 수행할 수 있도록 연결을 닫고 정수 종료 코드(다른)를 반환하여 종료하고 싶습니다.

echo "Domain?";read d
openssl s_client -connect "$d":443

if [[ "$?" -eq 0 ]]; then
  echo "Encrypted"; do_something
else 
  echo "Plain."; do_something_else
fi

답변1

s_clientQ명령을 식별하십시오 .openssl 문서:

Q:  End the current SSL connection and exit.
printf "Q" | openssl s_client -connect google.com:443

또는:

echo | openssl s_client -connect google.com:443

또는:

openssl s_client -connect google.com:443 <<< "Q"

답변2

실행 openssl s_client -connect google.com:443하고 TLS 연결이 성공하면 명령은 표준 입력의 데이터가 연결을 통해 전송될 때까지 기다립니다.

실행 openssl s_client -connect google.com:443 </dev/null하고 연결에 성공하면 즉시 닫히고 원하는 동작을 얻게 됩니다.

관련 정보