SSL 루트 CA 인증서가 신뢰 저장소에 있지만 인식되지 않습니다. 왜?

SSL 루트 CA 인증서가 신뢰 저장소에 있지만 인식되지 않습니다. 왜?

배경:

  • aws.amazon.com/ec2의 Ubuntu Server 14.10 64비트
  • COMODO의 저렴한 PositiveSSL 서버 인증서
  • COMODO의 ZIP 아카이브로 서버 인증서 1개, 중간 CA 인증서 2개, 루트 CA 인증서 1개
  • Citadel의 WebCit httpsd

문제:

연결된 인증서 체인이 올바른 것 같지만 확인에 실패합니다.

openssl s_client myhost:port

인증서 체인과 발급자-주체 쌍이 체인을 통해 올바르게 정렬되어 있음을 보여 주지만 다음과 같습니다.

verify error:num=19:self signed certificate in certificate chain

루트 CA 인증서는 기본적으로 Ubuntu 서버 신뢰 저장소에 있지만 openssl에서는 허용되지 않습니다.

구체적으로: AddTrustExternalCARoot.crtCOMODO로부터 이메일을 통해 수신되었으며 /etc/ssl/certs/AddTrust_External_Root.pem어떤 링크가 /usr/share/ca-certificates/mozilla/AddTrust_External_Root.crt 동일합니까?

여기서 무엇이 잘못되었나요?

답변1

OpenSSL은 적어도 현재(1.0.2a)를 통해벌레인수 s_client가 없는 곳-CA{path,file}실제로 기본 신뢰 저장소를 사용하지 않습니다그래야만하므로 해당 신뢰 저장소에 따라 유효한 인증서를 확인하지 못합니다. (또한 s_servers_time, 그러나 이에 대한 검증에 신경을 쓰는 경우는 드뭅니다.)https://serverfault.com/questions/607233/how-to-make-openssl-s-client-using-default-ca. 수정 사항이 개발팀에 발표되었지만 출시 및 배포되는 데 다소 시간이 걸릴 수 있습니다. 그동안 -CA*인수를 명시적으로 지정해야 합니다. 이 버그가 없으므로 openssl verify인증서/체인이 유효한 것으로 올바르게 보고되었습니다.

업데이트2015/08/26:수정본이 출시되었습니다1.0.1o 및 1.0.2c의 2015/06/12. 그리고 다른 것을 조사하던 중 발견한 사실은 다음과 같습니다.RedHat 패키지는 괜찮았을 수도 있습니다.. 더 구체적으로 내가 이해하는 CentOS 소스 RPM은 openssl-1.0.1e-30.el6.11RedHat 사본(그러나 쉽게 확인할 수는 없음) 으로 2015년과 동일하게 보이는(텍스트로는 동일하지는 않지만) 2012/12/06 날짜 openssl-1.0.1c-default-paths.patch의 변경 사항이 포함되어 있습니다. s_client.c s_server.c s_time.c/06/12 업스트림 수정. 이 패치가 쉽게 돌아가서 확인할 수 없는 RedHat 및 CentOS 패키지에 적용되었다고 가정하면 예상대로 작동했을 것입니다.

답변2

최근 Ruby를 사용하여 스크립트를 개발할 때 Comodo 인증서와 비슷한 문제에 직면했습니다. 결국 OpenSSL에는 있는 것처럼 보였지만 상점에는 없었습니다.

이를 테스트하려면 모든 Comodo 중간 인증서를 다운로드하고 다음과 같은 인증서 번들을 생성하십시오(다운로드한 항목에 따라 다른 인증서 이름을 사용해야 함).

cat EssentialSSLCA_2.crt ComodoUTNSGCCA.crt UTNAddTrustSGCCA.crt AddTrustExternalCARoot.crt > yourDomain.ca-bundle

Comodo에는 이를 수행하는 방법에 대한 기사가 있습니다.

완료되면 OpenSSL을 사용하여 인증서를 다시 확인하고 명령줄에서 인증서 저장소를 지정해 보세요.

openssl verify -untrusted yourDomain.ca-bundle cert.pem

그 예는이 Unix 및 Linux StackExchange 기사.

어떤 인증서인지 확인한 후에는 해당 인증서를 로컬 인증서 저장소에 추가할 수 있습니다.우분투에 대해서는 여기에 자세히 설명되어 있습니다.이며 다음과 같습니다.

/usr/share/ca-certificates에 추가 CA 인증서용 디렉터리를 만듭니다.

sudo mkdir /usr/share/ca-certificates/extra

'.crt' 파일을 디렉터리에 복사합니다.

sudo cp foo.crt /usr/share/ca-certificates/extra/foo.crt

Ubuntu가 /usr/share/ca-certificates에 상대적인 '.crt' 파일 경로를 /etc/ca-certificates.conf에 추가하도록 합니다.

sudo dpkg-reconfigure ca-certificates

답변3

comodo 루트 인증서는 더 이상 신뢰할 수 없습니다. 이유를 모르는 경우 Google에서 "comodo 도난 인증서"를 검색해 보세요.

코모도 인증서는 저렴할 수 있지만 그 가치는 가격보다 훨씬 낮습니다. 사실상 가치가 없으며 신뢰 사슬이 깨졌습니다.

관련 정보