OpenSSL로 HTTP 프록시를 통해 웹사이트 인증서 검사하기
HTTP CONNECT 프록시를 통해 OpenSSL s_client를 사용하고 대상 이름, SNI, 인증서 검증을 일치시키세요.
s_client을 지원하는 설치된 OpenSSL -proxy을 사용하세요. 승인된 HTTP CONNECT 엔드포인트에서는 다음과 같이 합니다.
openssl s_client -proxy proxy.example:3128 -connect example.com:443 -servername example.com -verify_hostname example.com -verify_return_error -showcerts프록시 주소를 바꾸고 의도한 대상 이름을 일관되게 사용하세요. 선택할 수 있는 프록시를 통해 공개 대상을 테스트하려면 HTTP 프록시 목록에서 후보를 선택하세요. -connect은 대상을 선택하고, -servername은 TLS 가상 호스트에 SNI를 보내며, -verify_hostname은 신원을 확인합니다. SNI만으로는 호스트 이름 검증이 아닙니다. 옵션을 조정할 때 설치된 릴리스의 매뉴얼을 확인하세요.
-showcerts은 서버가 보낸 내용을 표시할 뿐 인증서 체인이 신뢰된다고 선언하지 않습니다. -verify_return_error은 검증 오류가 handshake를 종료하게 합니다. 그렇지 않으면 진단 클라이언트가 오류 후에도 계속할 수 있습니다. 개인 서비스에는 임의로 다운로드한 인증서를 신뢰하지 말고 승인된 CA 자료를 사용하세요.
| 결과 | 단계 |
|---|---|
| 407 | 대상 TLS 이전의 프록시 인증. |
| 거부된 CONNECT 대상 | 프록시 대상 정책. |
| 인증서를 받고 검증을 시도함 | 허용된 터널을 통한 대상 TLS 교환. |
OpenSSL 3.x와 Basic 인증 HTTP 프록시를 함께 사용할 때는 대상 검증을 유지하면서 s_client 프록시 계정 옵션을 사용하세요.
SOCKS 전용 엔드포인트는 이 명령이 사용하는 HTTP 프록시 인터페이스를 제공하지 않습니다. 승인된 TLS 가로채기에서는 표시된 인증서가 해당 중개자에 의해 발급될 수 있습니다. 차이를 고장 난 웹사이트 탓으로 돌리기 전에 발급자와 의도한 신뢰 구성을 비교하세요.