这是我关于堆栈溢出的第一篇文章。希望我没有打扰到任何人..。:)
我已经用gSOAP连接到我的iPhone应用程序的http-webservice有一段时间了。现在,我正在尝试使用https-webservice。我在项目中包含了openssl,并添加了编译平面-DWITH_OPENSSL。Build&Run正在工作,但不幸的是,openssl不允许我验证webservers证书。
打开调试模式,我发现webserver证书存在问题:
SSL验证错误或在深度为1的证书上发出警告:无法获得本地颁发证书颁发者/C=US /O=VeriSign,Inc./OU=第3类公共主证书颁发机构证书主体/O=VeriSign Trust Network/OU=VeriSign,Inc./OU=Class 3/OU=www.verssign.com/CPS Incorp.by参考资料。法律责任有限公司(C)97 VeriSign
使用SSL购物者SSL检查器进行检查,结果如下:
所有主要的web浏览器都应该信任证书(所有正确的中间证书都已安装)。
关于如何解决这个问题,有什么想法吗?
BR
马丁
发布于 2010-12-16 12:58:54
嗯,有时候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:无法获得本地颁发者证书“。不管怎样,它现在起作用了。
发布于 2016-06-21 01:12:47
禁用Auth不是正确的解决方案。我怀疑您没有设置openssl用于信任ca的CA证书文件路径。
soap_ssl_client_context(&soapObject,SOAP_SSL_DEFAULT,NULL,NULL,cacerts.pem,NULL,NULL))
您可以从mozilla获得cacerts.pem。如果您的应用程序只允许连接到一个网站,那么您应该保留网站证书颁发的CA的散列,并从pem文件中删除所有不必要的ca。
https://stackoverflow.com/questions/4410424
复制相似问题