SSLCertificateFile과 SSLCertificateChainFile의 차이점은 무엇입니까?


35

일반적으로 가상 호스트에서 SSL은 다음 지시문으로 설정됩니다.

Listen 443 

SSLCertificateFile /home/web/certs/domain1.public.crt
SSLCertificateKeyFile /home/web/certs/domain1.private.key
SSLCertificateChainFile /home/web/certs/domain1.intermediate.crt

보낸 사람 : 여러 가상 호스트가있는 서버에서 단일 도메인에 SSL을 사용하려면이 구성이 작동합니까?

차이점은 무엇이며 SSLCertificateFile그리고 SSLCertificateChainFile? 클라이언트가 GoDaddy에서 CA 키를 구입했습니다. GoDaddy는 SSLCertificateFile(.crt 파일) 만 제공 하고 SSLCertificateKeyFile (.key 파일) 만 제공하는 것 같습니다 SSLCertificateChainFile.

내 SSL이 SSLCertificateChainFile경로를 지정 하지 않고 계속 작동 합니까?

또한 이러한 파일을 배치해야하는 정식 경로가 있습니까?


1
가장 일반적으로 나는 인증서 파일을 넣어 사람들이에 참조 배치 /etc/ssl, /usr/local/etc/ssl또는에서 ssl웹 사이트에 하위 디렉토리 별 (예 : /home/www/example.com/data웹 사이트가 다음있다 home/www/example.com/ssl인증서 표시가 있습니다).
Chris S

답변:


48

엄밀히 말하면 SSL이 작동하기 위해 체인이 필요하지 않습니다.

당신이 항상 필요한 것은SSLCertificateFileA가와 SSLCertificateKeyFile해당 인증서에 대한 올바른 키를 포함.

문제는 아파치에게 인증서 만 제공한다면, 클라이언트에게 연결하는 데 필요한 모든 인증서는 SSL 인증서에 대한 전체 이야기를 알려주지 않는다는 것입니다. "누군가 서명했지만 그들에 대해 말하지 않겠다"고 말합니다.

대부분의 클라이언트 시스템에는 루트와 중간 인증서가 모두 포함되어있어 신뢰 관계를 설정하기 위해 일치하는 서명 관계를 확인할 수 있기 때문에 일반적으로 문제가 없습니다. 그러나 때때로 이것은 작동하지 않습니다. 가장 자주 발생하는 문제는 인증서에 서명 한 중간 CA의 인증서를 보유하지 않는 클라이언트입니다.

그것이 체인이 들어오는 곳입니다. 이를 통해 Apache는 클라이언트에게 신뢰 관계의 모양을 정확하게 보여 주므로 클라이언트가 인증서, 신뢰할 수있는 루트 및 알 수없는 중간 사이의 공백을 채울 수 있습니다. 체인은 다음 두 가지 방법 중 하나로 구성에 포함될 수 있습니다.

  • SSLCertificateFile서버 인증서 다음에 새 줄에 순서대로 설정 한 것과 동일한 파일에 포함됩니다 (루트는 맨 아래에 있어야 함). 이와 같이 설정 SSLCertificateChainFile하면와 정확히 동일한 파일을 가리킬 수 SSLCertificateFile있습니다.
  • SSLCertificateChainFile지시문에 구성된 별도의 파일에서 ; 서버의 인증서를 발행 한 CA 인증서는 파일에서 첫 번째 파일이어야하며 루트에있는 다른 인증서가 있어야합니다.

현재 가지고있는 인증서 파일을 확인하십시오. 체인 데이터가 포함되어 있지 않다고 확신합니다. 일반적으로 정상적으로 작동하지만 결국 일부 브라우저 또는 다른 문제가 발생합니다.


2
중간체가 포함되어 있지 않으면 "보통 잘 작동한다"고 GoDaddy 인증서에 더 이상 적용되지 않는다고 생각합니다. Verisign 및 Thawte와 같은 사람들에게 더 이상 적용되는지 확실하지 않습니다. 실제로 브라우저에 포함 된 기본 인증서와 사이트 인증서를 더 멀리 만들기 위해 이동했기 때문입니다. 중간체를 죽이는 것이 더 간단하기 때문에 해지가 더 쉽다고 생각합니다.
cjc

"SSLCertificateFile에 포함되어 있습니다." 체인을 넣어야 SSLCertificateChainFile합니다.
Steve Kehlet

@SteveKehlet 문서화되지 않았지만 과거에 성공적으로 작동했습니다. 올인원 파일을 어떻게 포맷 했습니까?
Shane Madden

1
@SteveKehlet 사실, 당신 말이 맞아요, 기억이 잘못되었습니다; 나는 그것이 하나의 파일에 설정했던 방법은 모두 가지고 있었다 SSLCertificateFileSSLCertificateChainFile맞에 내 대답을 편집 - 작품 같은 결합 된 파일로 지적한다.
Shane Madden

트윗 담아 가기 작동합니다! 그것을 알아 내 주셔서 대단히 감사합니다.
Steve Kehlet


4

실제로 GoDaddy는 중간 체인을 제공합니다.

http://support.godaddy.com/help/5238

여기에 더 많은 토론이 있습니다.

http://support.godaddy.com/help/868/what-is-an-intermediate-certificate

새 인증서를 다운로드하는 방법을 알려주는 GoDaddy의 이메일에는 중간 인증서 파일에 대한 정보도 있습니다. 어쩌면 바닥을 향하고 있습니다. 아마도 당신의 눈이 언어에서 눈을 뜨고 팔아 올린 후입니다.

올바른 SSLCertificateChainFile 지시문을 포함하지 않으면 어떻게 될지에 대해 SSL 사이트는 브라우저에서 사이트의 인증서 체인을 따를 수 없으므로 브라우저에서 유효성을 검사하지 않기 때문에 브라우저에 큰 빨간색 경고가 표시됩니다 브라우저가 알고있는 인증 기관이 소유 한 인증서


2

SSLCertificateChainFile에 대한 이전의 좋은 답변에 해당 파일의 인증서 순서도 중요하다는 것을 추가하고 싶습니다. OpenSSL 기반 클라이언트는 주문 자체를 정렬하지만 그넛 기반 클라이언트는 순서가 잘못된 체인에서 실패합니다.

다음과 같이 gnutls-cli로 주문을 테스트하십시오.

gnutls-cli --x509cafile /etc/ssl/certs/ca-certificates.crt -p https wwwsec.cs.uu.nl

여기서 /etc/ssl/certs/ca-certificates.crt는 배포판이 결합 된 인증서를 넣는 위치입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.