2010-12-10 2 views
1

이것은 첫 번째 stackoverflow 게시물입니다. 다행히도 나는 누군가를 방해하지 않고있다. :)
나는 잠시 동안 나의 iPhone 애플리케이션을 위해 http-webservice에 연결하는 gSOAP로 작업 해왔다. 이제는 https-webservice를 이용하려고합니다. 프로젝트 내에서 openssl을 포함하고 compileflat -DWITH_OPENSSL을 추가했습니다. 실행 & 실행은 작동하지만 불행하게도 openssl은 웹 서버 인증서를 확인할 수 없습니다.gSOAP 및 OpenSSL on iPhone

SSL 깊이 1에서 인증서 경고 오류 또는 확인 :
는 디버그 모드 켜기, 나는 웹 서버 인증서에 문제가 있음을 발견 C를 지역 발급자 인증서 인증서 발행자를 얻을 수/할 수없는 = US/O = 베리사인, Inc./OU=Class 3 홍보 차 인증 기관 인증서 주체 /O = 베리사인 트러스트 네트워크/OU = 베리사인, Inc./OU=VeriSign 국제 서버 CA - 클래스 3/OU = www.verisign.com/CPS Incorp.by Ref. . 모든 주요 웹 브라우저 (모든 올바른 중간 인증서가 를 설치) 에 의해

인증서를 신뢰한다 : 책임 LTD (C) 97 베리사인

는에 SSL Shoppers SSL Checker 결과를 확인하고 있습니다.

해당 문제를 해결하는 방법에 대한 아이디어가 있으십니까?

BR

마틴

답변

0

은 물론, 때로는 RTFM 정말 (HTTPS/SSL로 보안 SOAP 클라이언트) :

제 19.20 도움이 읽습니다 "를 사용, 테스트 목적으로 서버 인증을 사용하지 않도록 설정하려면 다음 : GE 할 수 없습니다 : SSL 깊이 1에 오류 또는 인증서와 함께 경고를 확인 "

if (soap_ssl_client_context(&soap, 
    SOAP_SSL_NO_AUTHENTICATION, 
    NULL, 
    NULL, 
    NULL, 
    NULL, 
    NULL 
    )) 
{ 
    soap_print_fault(&soap, stderr); 
    exit(1); 
} 

불행히도을 -DSOAP_DEBUG 옵션은 여전히 ​​읽기" t 로컬 발급자 인증서 ". 어쨌든, 지금 일하고 있습니다.

0

인증을 사용하지 않는 것이 올바른 해결책이 아닙니다. openssl이 CA를 신뢰하는 데 사용하는 CA 인증서 파일 경로를 설정하지 않은 것으로 의심됩니다.

soap_ssl_client_context (& soapObject, SOAP_SSL_DEFAULT, NULL, NULL, cacerts.pem, NULL, NULL)은 모질라에서 cacerts.pem를 얻을 수 있습니다

). 앱이 하나의 웹 사이트에만 연결할 수 있다면 웹 사이트 인증서가 발급 된 CA의 해시를 그대로두고 불필요한 모든 ca를 pem 파일에서 제거해야합니다.