Nice programing

OpenSSL : Experian URL의 첫 번째 인증서를 확인할 수 없습니다.

nicepro 2020. 11. 7. 10:29
반응형

OpenSSL : Experian URL의 첫 번째 인증서를 확인할 수 없습니다.


OpenSSL 클라이언트를 사용하여 Ubuntu 10.10에서 Experian에 대한 SSL 연결을 확인하려고합니다.

openssl s_client -CApath /etc/ssl/certs/ -connect dm1.experian.com:443

문제는 연결이 확인 반환 코드 21 (첫 번째 인증서를 확인할 수 없음)과 함께 닫히는 것입니다.

인증서 목록을 확인한 결과 Experian (VeriSign Class 3 Secure Server CA-G3)에 서명하는 데 사용 된 인증서가 목록에 포함되어 있습니다.

/etc/ssl/certs/ca-certificates.crt 

그러나 첫 번째 인증서를 확인할 수없는 이유를 모르겠습니다. 미리 감사드립니다.

전체 응답은 여기에서 볼 수 있습니다 : https://gist.github.com/1248790


첫 번째 오류 메시지는 문제에 대해 자세히 알려줍니다.

오류 확인 : num = 20 : 로컬 발급자 인증서를 가져올 수 없습니다.

최종 엔티티 서버 인증서의 발급 인증 기관은 다음과 같습니다.

VeriSign 클래스 3 보안 서버 CA-G3

CA 파일을 자세히 살펴보십시오. 이 인증서는 중개 CA이므로 찾을 수 없습니다. 발견 한 것은 VeriSign의 G3 공용 기본 CA 와 유사한 이름 입니다.

하지만 왜 다른 연결은 성공하지만이 연결은 성공하지 않습니까? 문제는 잘못된 서버 구성입니다 ( -debug옵션을 사용하여 직접 참조 ). "양호한"서버는 핸드 셰이크 중에 전체 인증서 체인을 전송하므로 필요한 중간 인증서를 제공합니다.

그러나 실패한 서버 는 최종 엔티티 인증서 보내며 OpenSSL은 누락 된 중간 인증서를 "즉시"다운로드 할 수 없습니다 (기관 정보 액세스 확장을 해석하여 가능함). 따라서 시도는 실패 s_client하지만 FireFox ( "인증서 검색"기능을 지원함)를 사용하여 동일한 URL을 탐색하면 성공합니다.

문제를 해결하기위한 옵션은 서버가 전체 체인을 보내도록하거나 클라이언트 측 매개 변수로 OpenSSL에 누락 된 중간 인증서를 전달하여 서버 측에서이를 수정하는 것입니다.


엠 보스의 답변에 추가 정보를 추가합니다.

간단히 말해서 인증서 체인에 잘못된 인증서가 있습니다.

예를 들어 인증 기관에서 3 개의 파일을 제공했을 가능성이 큽니다.

  • your_domain_name.crt
  • DigiCertCA.crt # (또는 인증 기관의 이름)
  • TrustedRoot.crt

이 모든 파일을 하나의 번들로 결합했을 가능성이 높습니다.

-----BEGIN CERTIFICATE----- 
(Your Primary SSL certificate: your_domain_name.crt) 
-----END CERTIFICATE----- 
-----BEGIN CERTIFICATE----- 
(Your Intermediate certificate: DigiCertCA.crt) 
-----END CERTIFICATE----- 
-----BEGIN CERTIFICATE----- 
(Your Root certificate: TrustedRoot.crt) 
-----END CERTIFICATE-----

번들을 생성했지만 이전 버전 또는 잘못된 버전의 Intermediate Cert (예 : DigiCertCA.crt)를 사용하면 설명하는 정확한 증상을 얻을 수 있습니다.

인증 기관에서 모든 인증서를 다시 다운로드하고 새로운 번들을 만드십시오.


Amazon Elastic Load Balancer 인스턴스에 서명 된 인증서를 설치하는 것과 동일한 문제가 발생했습니다.

모두 브라우저 (Chrome)를 통해 찾은 것처럼 보였지만 Java 클라이언트를 통해 사이트에 액세스하면 javax.net.ssl.SSLPeerUnverifiedException 예외가 발생했습니다.

내가하지 않은 것은 내 ELB 인스턴스에 내 인증서를 설치할 때 "인증서 체인"파일을 제공하는 것입니다 ( https://serverfault.com/questions/419432/install-ssl-on-amazon-elastic-load-balancer-with -godaddy- 와일드 카드 인증서 )

서명 기관에서 서명 된 공개 키만 전송되었으므로 자체 인증서 체인 파일을 만들어야했습니다. 내 브라우저의 인증서 뷰어 패널을 사용하여 서명 체인의 각 인증서를 내보냈습니다. (중요한 인증서 체인의 순서는 https://forums.aws.amazon.com/message.jspa?messageID=222086 참조 )

참고 URL : https://stackoverflow.com/questions/7587851/openssl-unable-to-verify-the-first-certificate-for-experian-url

반응형