gSOAP и OpenSSL на iPhone - PullRequest
       30

gSOAP и OpenSSL на iPhone

1 голос
/ 10 декабря 2010

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

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

Проверка с помощью Проверка покупателей SSL Проверка SSL приводит к:

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

Есть идеи, как решить эту проблему?

BR

Martin

Ответы [ 2 ]

0 голосов
/ 21 июня 2016

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

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

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

0 голосов
/ 16 декабря 2010

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

Раздел 19.20 (Защищенные клиенты 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);
}

К сожалению, опция -DSOAP_DEBUG по-прежнему гласит «Ошибка проверки SSL или предупреждение с сертификатом на глубине 1: невозможно получить сертификат локального эмитента».Во всяком случае, это работает сейчас.

...