인증서가 유효하지 않은 경우 왜 컬 -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スタイルの応答など)を送信しない可能性があります。

関連情報