2014-05-15 3 views
1

내 응용 프로그램을 TLS 1.2를 사용하는 서버에 연결하려고합니다. 서버가 이미 장치에 설치되어있는 자체 서명 된 CA 인증서로 서명 된 인증서를 사용하고 있습니다 (CA 인증서를 전자 메일로 보내서 탭한 후 설정 -> 일반 -> 프로파일 아래에 표시됨). 이것은 이전에 내 응용 프로그램에서 작동했지만 우리는 사용하고있는 CA 인증서를 변경하여 서버의 인증서도 업데이트했습니다. 이제 SSL 오류가 발생합니다.왜 서버 인증서가 거부됩니까?

내가보고있는 오류는 클라이언트에서 SSLHandshake로 전화 할 때 errSSLXCertChainInvalid입니다. 내가 알 수있는 한, 서버 인증서가 유효해야합니다. openssl verify -CAfile ca-cert.pem server-cert.pemOK을 반환하고 ca-cert.pem은 장치에 설치된 것과 동일한 CA 인증서입니다.

아이디어가 있으십니까? 감사!

errSSLXCertChainInvalid — The peer has an invalid certificate chain; for example, signature verification within the chain failed, or no certificates were found.

을 그리고 당신은 SSLSetPeerDomainName를 사용하는 경우 :

답변

3

가이 오류에 대한 사과의 documentation에 몇 가지 정보입니다

You can use this function to verify the common name field in the peer’s certificate. If you call this function and the common name in the certificate does not match the value you specify in the peerName parameter, then handshake fails and returns errSSLXCertChainInvalid.

내가 장치 구성 프로파일을 제거하고 새로운 하나를 만드는 게 좋을 것.

또한 웹 브라우저와 같은 오류없이 서버에 액세스 할 수 있는지 확인하는 것이 좋습니다. 인증서에 문제가 있거나 iOS 기기의 구성 프로파일에 문제가있는 경우이를 알려줍니다.

+1

감사합니다. CA 인증서 프로필에 문제가있는 것 같습니다. 삭제 후 인증서 파일을 다시 다운로드하면 연결이 작동합니다. 아마도 잘못된 SSL 형식 파일에서 CA 인증서를 설치했을 것입니다. CA 인증서 만있는 PEM 파일이 올바른 프로파일을 설치 한 것으로 보입니다. – Greg

관련 문제