"발급자 인증서를 얻을 수 없습니다"라는 메시지와 함께 NginX 클라이언트 인증서 인증이 실패합니다.

"발급자 인증서를 얻을 수 없습니다"라는 메시지와 함께 NginX 클라이언트 인증서 인증이 실패합니다.

현재 NginX 리버스 프록시를 통해 메일 서버에 대한 클라이언트 인증서 인증을 설정하는 데 까다로운 문제가 발생했습니다.

이 설정은 대부분의 경우 클라이언트 인증서 없이도 잘 작동하는 것 같습니다. 그러나 이러한 검사를 활성화하고 테스트를 실행하면 openssl s_client항상 다음과 같은 결과가 나타납니다.

Verify return code: 2 (unable to get issuer certificate)

내 nginx.conf의 관련 부분은 다음과 같습니다.

ssl                     on;
ssl_certificate         /etc/ssl/certs/server_cert.pem;
ssl_certificate_key     /etc/ssl/private/server_key.pem;

ssl_client_certificate  /etc/ssl/certs/IntermediateCA_chain.crt;
ssl_crl                 /etc/ssl/crl.pem;
ssl_verify_client       on;

문서중간 CA_chain.crt이는 PEM 형식이며 IntermediateCA 인증서와 후속 RootCA 인증서로 구성됩니다.

참고 사항: 내가 할 때 openssl x509 -text -noout -in IntermediateCA_chain.crt IntermediateCA의 인증서만 표시됩니다. 나는 체인이 나타날 것으로 예상했습니다. 이것이 올바른 행동입니까?

다음 명령을 사용하여 연결을 테스트합니다.

openssl s_client -connect server:995 -cert mycert.pem\
 -key mykeyfile.pem -debug -CAfile IntermediateCA_chain.pem

~로 이어지다

[...]
0b50 - b3 c3 3b 17 66 8e 52 b3-ad 7f 14                  ..;.f.R....
depth=1 DC = top, DC = ad, CN = Intermediate CA
verify error:num=2:unable to get issuer certificate
issuer= C = DE, O = My Company, CN = My Companies Root CA, emailAddress = [email protected]
read from 0x10f6a10 [0x10fe333] (5 bytes => 5 (0x5))
[...]

나는 양쪽에서 생각할 수 있는 IntermediateCA_chain.pem의 모든 변형을 시도했습니다(IntermediateCA.pem, RootCA.pem, IntermediateCA_chein.pem).

-CAfileuse 에 따라 약간 변경되고 서버 로그에는 아무것도 표시되지 않기 때문에 클라이언트 측에 결함이 있는 것 같습니다 (실제로는 아무것도 표시되지 않습니다. 연결 시도가 없거나 아무것도 없음). 내가 보기엔 좋아하는 것 같아중간 CA_chain.pem서버측이나 클라이언트측에서는 올바르게 읽을 수 없습니다. 이 오류로 인해 openssl이 IntermediateCA와 발급된 인증서를 확인할 수 없는 것으로 보입니다. 누군가 이 수수께끼를 풀도록 도와줄 수 있나요?

답변1

문제가 해결되었습니다.

다른 사람들에게 도움이 될 수 있는 가능성을 배제하기 위해 원인과 해결책을 게시하겠습니다.

첫 번째 오류( )는 verify error:num=2:unable to get issuer certificate클라이언트에서 사용하는 형식으로 인해 발생합니다. -CAfile이는 x509 PEM 형식이며 RootCA 인증서의 IntermediateCA 인증서 체인을 포함합니다. 문제는 그거다반품해당 인증서 블록 뒤에 각 CA의 CRL(인증서 해지 목록)이 포함됩니다. 이를 제거하면 오류가 해결되었습니다.

그 후 방금 nginx.conf에서 다양한 옵션을 켜서 진단한 설명적이지 않은 "SSL 오류"를 받았습니다(팁을 주신 @mofoe에게 감사드립니다!). ssl_crl내부에 있는 것으로 밝혀졌습니다nginx.confIntermediateCA용 CRL(x509 PEM 형식!)뿐만 아니라 Root-CA용 CRL도 포함해야 합니다. 두 파일을 하나의 CRL 파일로 병합하면 두 번째 오류가 해결되었으며 서버는 예상된 메일 서버 환영 메시지로 응답했습니다.

관련 정보