2010-12-10 1 views
1

это мое первое сообщение о stackoverflow. Надеюсь, я никого не беспокою ... :)
Я работаю с gSOAP-подключением к http-webservice для своего iPhone-приложения некоторое время. Теперь я пытаюсь перейти на https-webservice. Я включил openssl в проект и добавил compileflat -DWITH_OPENSSL. Build & Run работает, но, к сожалению, openssl не позволит мне проверить сертификат webservers.
Включение DEBUG-MODE, я обнаружил, что существует проблема с сертификатом WebServers:gSOAP и OpenSSL на iPhone

SSL проверить ошибку или предупреждение с сертификата на глубине 1: не удалось получить местный сертификат эмитента сертификата эмитента/C = US/O = VeriSign, Inc./OU=Class 3 Public Primary сертификации орган субъекта сертификата /O = VeriSign Trust Network/OU = VeriSign, Inc./OU=VeriSign Международный сервер CA - Class 3/OU = www.verisign.com/CPS Incorp.by Ref. . ОТВЕТСТВЕННОСТЬ LTD (с) 97 VeriSign

Проверка с помощью SSL Shoppers SSL Checker результатов в:

Сертификат должен быть доверенным все основные веб-браузеры (все правильные промежуточные сертификаты установлены).

Любые идеи о том, как решить эту проблему?

BR

Martin

ответ

0

хорошо, иногда RTFM действительно помогает :)

Раздел 19.20 (Secure SOAP клиентов с HTTPS/SSL) гласит: «Для того, чтобы отключить проверку подлинности сервера для тестирования, используйте следующее: «

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

Unfortunatly, -DSOAP_DEBUG вариант все еще читает» SSL проверить ошибку или предупреждение с сертификатом на глубине 1: неспособный ге т местного сертификата эмитента ». Во всяком случае, он работает сейчас.

0

Отключение автоответчика - это неправильное решение. Я подозреваю, что вы не устанавливаете путь к файлам сертификатов ca, который openssl использует для доверия CA.

soap_ssl_client_context (& soapObject, SOAP_SSL_DEFAULT, NULL, NULL, cacerts.pem, NULL, NULL))

вы можете получить cacerts.pem от Mozilla. если ваше приложение разрешает только подключение к одному веб-сайту, то вы должны просто оставить хэш для CA, сертификат которого выдается и удалить все ненужные ca из файла pem.