1

これはstackoverflowに関する私の最初の投稿です。うまくいけば、私は誰も邪魔していません...:)
私はしばらくの間私のiPhoneアプリのhttp-webserviceに接続しているgSOAPで働いています。今、私はhttps-webserviceに切り替えようとしています。プロジェクトにopensslを含め、compileflat-DWITH_OPENSSLを追加しました。Build&Runは機能していますが、残念ながらopensslではWebサーバーの証明書を確認できません。
DEBUG-MODEをオンにすると、Webサーバーの証明書に問題があることがわかりました。

深さ1の証明書でSSL検証エラーまたは警告VeriSign、Inc./OU=VeriSign International Server CA-Class 3 / OU = www.verisign.com / CPSIncorp.byRef。LIABILITY LTD。(c)97 VeriSign

SSLショッパーSSLチェッカーで確認すると、次のようになります。

証明書は、すべての主要なWebブラウザーによって信頼されている必要があります(すべての正しい中間証明書がインストールされています)。

その問題を解決する方法について何かアイデアはありますか?

BR

マーティン

4

2 に答える 2

0

まあ、時々RTFMは本当に役立ちます:)

セクション19.20(HTTPS / SSLを使用したセキュアSOAPクライアント)には、「テスト目的でサーバー認証を無効にするには、次を使用します」と記載されています。

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の証明書での警告:ローカル発行者証明書を取得できません」と表示されます。とにかく、それは今働いています。

于 2010-12-16T12:58:54.837 に答える
0

Authを無効にすることは正しい解決策ではありません。opensslがCAを信頼するために使用するCA証明書ファイルのパスを設定していないようです。

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

mozillaからcacerts.pemを入手できます。アプリで1つのWebサイトへの接続のみが許可されている場合は、Webサイト証明書が発行されたCAのハッシュを残し、pemファイルから不要なCAをすべて削除する必要があります。

于 2016-06-21T01:12:47.543 に答える