iPhone上的gSOAP和OpenSSL

时间:2010-12-10 15:34:13

标签: iphone openssl gsoap

这是我在stackoverflow上的第一篇文章。希望我不打扰任何人...... :) 我一直在使用gSOAP连接到我的iPhone App的http-webservice一段时间了。现在我试图切换到https-webservice。我在项目中包含了openssl并添加了compileflat -DWITH_OPENSSL。 Build& Run正在运行,但不幸的是openssl不会让我验证网络服务器证书 打开DEBUG-MODE,我发现Web服务器证书存在问题:

  

SSL验证错误或警告   深度证书1:无法获得   本地发行人证书   issuer / C = US / O = VeriSign,Inc. / OU = Class   3公共初级认证   权威证书科目   / O = VeriSign Trust Network / OU = VeriSign,   Inc./OU=VeriSign国际服务器   CA - Class 3 / OU = www.verisign.com / CPS   Incorp.by Ref。责任有限公司(c)97   VeriSign公司

使用SSL Shoppers SSL Checker进行检查会导致:

  

证书应该受到信任   所有主要的网络浏览器(全部   正确的中间证书是   安装)。

有关如何解决该问题的任何想法?

BR

马丁

2 个答案:

答案 0 :(得分: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:无法获得本地颁发者证书”。无论如何,它现在正在运作。

答案 1 :(得分:0)

禁用Auth不是正确的解决方案。我怀疑你没有设置openssl用来信任CA的ca证书文件路径。

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

你可以从mozilla获得cacerts.pem。如果您的应用只允许连接到一个网站,那么您应该留下发布网站证书的CA的哈希值,并从pem文件中删除所有不需要的内容。