2012-03-14 5 views
1

안녕하세요!내 API에 CA 체인 제공 : 모든 인증서를 체인에 포함해야합니까?

HTTPS를 통해 액세스 할 수있는 REST와 유사한 API를 개발 중입니다. 내 인증서는 CA에서 발급 한 인증서로 중간 수준의 인증서가 있습니다 (내 인증서 : AddTrust -> Comodo -> EssentialSSL -> my cert).

나 페이스 북과 같은 내 API 사용자를위한 내 .NET 및 PHP SDK를 사용하여 인증서 체인을 제공하고자하는 수행합니다 https://github.com/facebook/php-sdk/blob/master/src/fb_ca_chain_bundle.crt

나는 하나 그것에 의해 내 인증서 하나를 주문하여 유사한 텍스트 파일을 만들었습니다 커맨드 라인 컬 및 PHP 컬 라이브러리에서 작동합니다.

그러나 루트 인증서 (내 경우에는 AddTrust)가있을 때만 작동합니다.

모든 인증서를 내 SDK 또는 루트 인증서와 함께 묶어야합니까?

답변

0

고객 사용자가 원하지 않는 인증서를 번들로 묶어야합니다. 체인에 중간 인증서가없는 경우 그 아래의 모든 인증서가 유효하지 않습니다.

인증서가 EssentialSSL에 의해 발급되었습니다. EssentialSSL의 중간 인증서가없는 경우 시스템은 인증서가 유효하다는 것을 알 수 없거나 궁극적으로 AddTrust로 되돌아갑니다. 예를 들어 AddTrust 및 Comodo에는 인증서가 이미 설치되어 있지만 EssentialSSL에는 설치되어 있지 않으므로 시스템에서 인증서를 신뢰할 수 없다고 간주합니다.

"루트 인증서가 하나만있을 때 작동합니까?"라는 말이 정확히 무엇입니까? 항상에는 정의상 체인에 루트 인증서가 하나만 있습니다. 나머지는 더 높은 사람이 발급 한 중간 인증서입니다. 당신은 실제로 어떤 문제에 대해 더 구체적으로 할 수 있습니까?

+0

처음에는 전체 체인이 필요하다고 생각하기 때문에 여기에 질문이옵니다. "단 하나의 루트 인증서 만있을 때 작동합니다"라고 말하면 말하자면 전체 체인을 제공하고 SSL 검사를 요구할 때 단 하나의 최상위 루트 인증서를 제공 할 때와 동일한 방식으로 작동합니다. – artvolk

+0

개발 기계가 아닌 다른 기계에서 이것을 테스트하고 있습니까? 중간 인증서가 로컬 인증서 저장소에 설치되어 있으면 체인이 필요하지 않습니다. 인증서 체인이 제대로로드되고 있는지 확인하려면 "EssentialSSL"인증서가 설치되지 않은 컴퓨터를 찾아야합니다. –

+0

Windows의 커맨드 라인 curl과 php의 curl 라이브러리에는 기본적으로 * 모든 certs * (심지어 브라우저 같은 CA 인증서)가 없습니다. – artvolk

관련 문제