2016-09-30 39 views
0

gsoapスタブC++をカスタムダイナミックライブラリに入れ、メインプログラムとリンクして構築しました。カスタムライブラリのOpensslとgsoap

https呼び出しを使用すると、opensslからERROR_SYSCALLが取得され、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() 

私は私たちのメインプログラムで直接同じコードを使用している場合、それは何の問題もなく動作します...

をしないのですか?私たちのカスタムライブラリは一種で

は、カスタムライブラリではなく、最新のgSOAPで

+0

それはgsoapの問題のように奇妙に見えます。古いバージョンは新しいものではありません。同じプロキシ定義だけでバージョンをアップグレードしました....何が間違っている可能性がありますか? – Lonko

+0

2番目のWebサービスを追加したことは事実です。エラーはこのトレッドに似ています:http://openssl.6102.n7.nabble.com/SSL-read-returns-SSL-ERROR-SYSCALL-td24361.html – Lonko

+0

クライアント情報、サーバー情報、クライアントの安全なトランスポート(私はそのOpenSSLと思う)、サーバーの安全なトランスポート、ファイアウォールの設定、OpenSSLのバージョンなどの多くの情報が必要です。 – jww

答えて

0

ない正確な問題について...ダイナミックかつ動的にOpenSSLのもリンクです。 TLSでSNIを使用するには、GsoapがSSL_set_tlsext_host_nameを追加しました。たとえば、デフォルトのSSL証明書を持つIPベースのサーバーを使用している場合。 - 私たちはIPを使用して、名前をホストしていないため、エラーSYSCALLを引き起こす
SSL_set_tlsext_host_name(SOAPベース> SSL、ホスト):いいえSNIは、すべてのコールは

だから私たちは今のところ、このようにそれを解決しERROR_SYSCALL

で失敗します。 hostnameはipであり、有効な名前ではないため、サーバーはリンクを削除します。我々はこのために任意のフラグを使用しない代わりに、ホスト名とのgSOAPのIPを使用する必要があるように、私たちはstdsoap2.cpp

私達はちょうどstdsoap2.cppでSSL_set_tlsext_host_nameを検索し、コメントアウトして一部をコメントアウト。

おそらくGsoapにはこのフラグが必要ですか?