인증서가 유효하지 않은 경우 왜 컬 -k -I https://host.example.com이 응답 헤더를 반환하지 않습니까?

인증서가 유효하지 않은 경우 왜 컬 -k -I https://host.example.com이 응답 헤더를 반환하지 않습니까?

-k (--insecure) 옵션과 -I 디스플레이 헤더를 사용하여 컬을 하면 예상 헤더 대신 HTML 응답이 계속 표시되는 이유를 아는 사람이 있습니까?

예상대로 작동합니다.

$ curl -I https://validsslcert.example.com
HTTP/1.1 302 Moved Temporarily
Server: Apache-Coyote/1.1
...

$ curl -k -I https://validsslcert.example.com
HTTP/1.1 302 Moved Temporarily
Server: Apache-Coyote/1.1
...

$ curl -k https://invalidcert.example.com
<br />
...

예상대로 작동하지 않음:

$ curl -k -I https://invalidcert.example.com
<br />
<br />
<br />
<center><h2>Maintenance</h2></center>

여기서 무엇을 하는지는 중요하지 않지만 haproxy에서 다른 백엔드 ACL 로직을 식별하기 위해 어떤 헤더가 설정되어 있는지 테스트하고 있습니다.

컬을 사용하면 안전하지 않은 연결(잘못된 인증서)을 설정하고 여전히 헤더를 반환할 수 있을 것으로 예상합니까?

답변1

나에겐 문제가 아니야. 다음 없이 실패함 -k:

$ curl -I https://self-signed.badssl.com/
curl: (60) SSL certificate problem: self signed certificate

그러나 다음과 같은 이유로 성공 -k하고 제목을 표시합니다 -I.

$ curl -k -I https://self-signed.badssl.com/
HTTP/1.1 200 OK
Server: nginx/1.10.3 (Ubuntu)
Date: Mon, 11 Jan 2021 15:16:31 GMT
Content-Type: text/html
Content-Length: 502
Last-Modified: Tue, 24 Mar 2020 00:15:54 GMT
Connection: keep-alive
ETag: "5e79513a-1f6"
Cache-Control: no-store
Accept-Ranges: bytes

문제의 서버가 손상되어 HTTP 헤더(예: HTTP/0.9 스타일 응답)를 보내지 않는 것일 수도 있습니다.

관련 정보