Nginx: OCSP 및 클라이언트 인증서

Nginx: OCSP 및 클라이언트 인증서

OCSP 스테이플링이 구성된 Nginx 설정이 작동 중입니다. 이제 여러 URL에 대한 클라이언트 인증서 인증을 추가하고 싶습니다.

ssl_client_certificate그래서 제한된 URL에 사용하는 CA 인증서(공개적으로 알려진 CA에서 서명하지 않은 개인 CA 인증서)를 가리키는 설명을 추가했으며 대부분의 서버는 여전히 공개적으로 사용할 수 있어야 하므로 ssl_verify_client로 설정했습니다 optional.

이것은 절반만 작동합니다. 인증서 전달 여부에 관계없이 cURL(*)을 사용하여 요청을 실행할 수 있으며 공개 URL과 인증서 존재를 확인하는 보호된 URL 모두에서 예상되는 응답을 받을 수 있습니다.

하지만 이제 제 질문은: 인증서를 제시하지 않고 브라우저를 사용하여 동일한 URL에 액세스할 때 Nginx가 오류 400으로 응답합니다. 저를 당황하게 만드는 것은 Firefox 개발자 도구를 사용하여 실패한 요청에서 cURL 요청을 생성할 때입니다. 명령줄에서 실행하면 완벽하게 작동합니다. 무엇이 문제일까요?

또한 cURL -v--trace-ascii브라우저 내에서 실패할 수 있는 이유를 설명하는 내용을 표시하지 않습니다. 여기에 전체 (긴) 구성을 붙여넣을 생각은 없습니다. 기본적으로 누락된 부분이 있다고 생각하시면 자유롭게 의견을 남겨주세요.

편집: cURL이 쿠키 및 세션 ID뿐만 아니라 Host, User-Agent, Accept, Accept-Language, 헤더 Referrer를 보내고 Firefox처럼 압축을 활성화한다는 것을 확인하고 확인했습니다 .DNT

또한 Firefox와 cURL에는 서버에 제공할 수 있는 클라이언트 인증서가 없으며 Firefox는 자동으로 인증서를 제공하는 대신 인증서를 요청하도록 구성되어 있습니다.

또 다른 편집: 점심 식사를 마치고 돌아온 후(그동안 구성 변경 없음) Firefox는 첫 번째 페이지와 관련 리소스를 한 번 로드할 수 있었습니다. 이제 몇 분 후에는 다양한 요청만 시도하고 즉, 변경 사항이 없으면 더 이상 작동하지 않습니다. 또한 Chrome에서는 오류 400을 보고하고 개발자 도구에서 "cURL로 복사"(다시 모든 헤더 포함)를 사용하면 cURL에서 다시 작동하는 것으로 나타납니다. 또한 단일 사용자 에이전트에 대해 표시되는 동작에 불일치가 없는지 확인하기 위해 모든 요청을 여러 번 시도했습니다. 나는 어리둥절합니다. 모든 것이 나에게는 매우 무작위로 보입니다.

관련 정보