2016-09-30 1 views
0

мы поставили наши gsoap-заглушки C++ в пользовательскую динамическую библиотеку, связали и создали ее против нашей основной программы.Openssl и gsoap из пользовательской библиотеки

Когда я использую вызов https, я получаю ERROR_SYSCALL из openssl и вижу, что он не работает в SSL_Connect.

Точная ошибка:

sk_sort:0xb6cc1680 
SOAP 1.2 fault SOAP-ENV:Receiver [no subcode] 
"SSL_ERROR_SYSCALL 
Error observed by underlying SSL/TLS BIO: Connection reset by peer" 
Detail: SSL_connect error in tcp_connect() 

Если я использую один и тот же код непосредственно в нашей основной программе он работает без каких-либо проблем ...

Что мне не хватает? наш обычай библиотека является динамической и связыванием также OpenSSL динамически ...

С наилучшими пожеланиями

+0

Странно выглядит, как проблема с gsoap. Старая версия работает не новая. Такое же определение прокси только что обновила версию .... Что может быть неправильным? – Lonko

+0

Это правда, что мы добавили вторую веб-службу, и ошибка похожа на эту протекцию: http://openssl.6102.n7.nabble.com/SSL-read-returns-SSL-ERROR-SYSCALL-td24361.html – Lonko

+0

Нам нужна дополнительная информация, такая как информация о клиенте, информация о сервере, безопасный транспорт клиента (я думаю, его OpenSSL), безопасный транспорт сервера, конфигурации брандмауэра, версия OpenSSL. – jww

ответ

0

Не совсем проблемами с пользовательской библиотекой, но с последним GSOAP. Gsoap добавил SSL_set_tlsext_host_name, чтобы использовать SNI с TLS. Если вы используете IP-сервер с сертификатом SSL по умолчанию, например. нет SNI, то все вызовы будут завершаться ERROR_SYSCALL

Так что мы решили его, как это сейчас:
SSL_set_tlsext_host_name (soap-> SSL, хост) - который вызывает ERROR SYSCALL, потому что мы используем IP, а не имя хоста. И сервер отбрасывает ссылку, поскольку имя хоста - это ip, а не действительное имя. Поскольку нам нужно использовать IP вместо имени хоста, и gsoap не использует для этого никакого флага, мы закомментировали часть в stdsoap2.cpp

Мы просто искали SSL_set_tlsext_host_name в stdsoap2.cpp и закомментировали.

Возможно, у Gsoap должен быть флаг для этого?

Смежные вопросы