불완전한 SSL 체인을 어떻게 수정합니까


29

Go Daddy SSL 인증서가 설치되어 있으며 Android를 제외한 모든 곳에서 잘 작동합니다.

https://www.ssllabs.com/ssltest/analyze.html 은 체인이 불완전하다고 말하며 스택 오버플 로에서 잘못된 순서의 SSL 체인이 Android에서 실패한다는 것을 읽었습니다 .

그러나 어떻게 순서대로 배치합니까? 내 서버에서? SSL 인증서 자체를 다시 입력해야합니까? FTP로 물건을 옮기시겠습니까?

답변:


19

zakjan의 답변에 이어, jquery를 사용하여 Android 웹보기에서 새로 안전한 서버에서 AJAX 요청을 수행하려고 할 때 문제가 발생했습니다. 브라우저에서는 작동했지만 내 앱에서는 작동하지 않았습니다.

나는이 사이트를 사용했다 : https://certificatechain.io/

나는 Comodo (positiveSSL)에서 가져온 서명 된 .crt 파일의 텍스트를 붙여 넣었으며 필요한 모든 것을 연결했습니다. 도메인 + "chain.crt"로 저장했습니다 (아래 참조).

그런 다음 아파치 구성에서 특정 가상 호스트에 대해 다음과 같이 입력했습니다.

SSLEngine On
SSLCertificateFile /etc/ssl/localcerts/example_com.crt
SSLCertificateKeyFile /etc/ssl/localcerts/example.com.key
SSLCACertificateFile /etc/ssl/localcerts/example.com.chain.crt

그 후, 내 안드로이드 앱의 웹보기에는 아약스를 사용하여 서버에 POST하는 데 문제가 없었습니다. 나는 2 개의 실제 장치, 하나는 2.3.4를 실행하고 다른 하나는 4.something을 시도했습니다. 그리고 에뮬레이터에서 2.3을 실행합니다. 모두 일했다.

이게 도움이 되길 바란다.


1
나를위한 열쇠는 SSLCACertificateFile지시문 을 추가하고 그것을 내 기관이 준 CA 파일로 지정하는 것이 었습니다. 다른 인증서를 인증서 파일에 간단히 연결하면 작동하지 않습니다.
Alex W

이전 아파치에서는 SSLCACertificateFile 대신 SSLCertificateChainFile을 사용할 수 있습니다 (설정 에서이 키를 검색하여 찾을 수없는 경우를 대비하여).
dr0i

놀랍게도하지만, @ 리차드 응답 사이트 사용 certificatechain.io을 하고 사이트가 여기이 질문에 대답, "... 월 잭에 의해 인증서 체인-해결에서 영감을"말한다 : superuser.com/a/866523/92500 , @zakjan 감사합니다!
Andrés Morales

SSLCACertificateFile내가 놓친 선이었다. 처음에는 SSL이 일부 브라우저 / OS에서 요청할 때 작동했지만 다른 브라우저에서는 그렇지 않기 때문에 CA가 너무 새롭다 고 가정했습니다. decoder.link/sslchecker를 사용하면 구성이 잘못 되었다는 것을 분명히하는 데 도움이 되었으며이 대답은 수정되었습니다. 고맙습니다!!
josephdpurcell

9

체인이 crt 파일에 있었고 원래 SSL이 작동했습니다.

GoDaddy에는 두 번째 인증서 인 gd_bundle.crt가 있습니다.

이 정보를 복사하여 서버에 설치된 crt에 추가하십시오.

따라서 서버의 원래 crt에는 1 개의 인증서가 있었고 동일한 파일에 3 개의 인증서가 있습니다. 이것이 체인입니다.

https://security.stackexchange.com/questions/24561/ssltest-chain-issues 에 따르면 여전히 ssllabs.com의 체인 문제에 앵커가 포함되어 있지만 문제는 아닙니다. -앵커 포함 / 24566 # 24566


2
체인 문제를 제거하려면 gd_bundle.crt에서 마지막 인증서 제거
삼매 관청

7

이러한 문제를 방지하기 위해 인증서의 모든 인증서를 신뢰할 수있는 루트 인증서 (이 순서는 제외)로 연결 하여 불완전한 인증서 체인 문제를 수동으로 해결할 수 있습니다 . 신뢰할 수있는 루트 인증서는 시스템의 루트 인증서 저장소에 이미 포함되어 있으므로 존재하지 않아야합니다.

발급자로부터 중간 인증서를 가져 와서 직접 연결할 수 있어야합니다. Btw, 절차를 자동화하는 스크립트를 작성했습니다. 올바르게 연결된 인증서의 출력을 생성하려면 인증서가 필요합니다. https://github.com/zakjan/cert-chain-resolver


이것은 로컬 시스템 만 인증서가 올바르게 설정되었다고 생각하는 솔루션처럼 들립니다.
Alex W

아니. 출력 인증서 번들은 웹 사이트 컨텐츠를 보내는 서버에 업로드되어야합니다. 모든 클라이언트는 중간체와 함께 인증서를받습니다.
zakjan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.