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)를 사용하면 설명하는 정확한 증상을 얻을 수 있습니다.
- SSL 연결이 브라우저에서 작동하는 것 같습니다.
- 다른 클라이언트에서 SSL 연결 실패
- 컬 오류와 함께 실패합니다 : " 컬 : (60) SSL 인증서 : 지역 발급자 인증서를 얻을 수 없습니다 "
- openssl s_client -connect에서 "verify error : num = 20 : unable to get local issuer certificate"오류가 발생합니다.
인증 기관에서 모든 인증서를 다시 다운로드하고 새로운 번들을 만드십시오.
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 참조 )
'Nice programing' 카테고리의 다른 글
플로팅을 위해 numpy를 사용하여 csv를 2D 행렬에로드 (0) | 2020.11.07 |
---|---|
css 표시 : 테두리가 표시되지 않는 테이블 (0) | 2020.11.07 |
iOS 앱 (iPhone 및 iPad)에서 수동 언어 선택 (0) | 2020.11.07 |
FIFO 기반 대기열 구현? (0) | 2020.11.07 |
다른 인수를 사용하여 동일한 URL 패턴에 대해 두 가지 방법을 만듭니다. (0) | 2020.11.07 |