Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C+中使用SSL+;gSOAP生成的类 我需要在C++中使用GSOAP库,我需要使用HTTPS。文档说明如何在C中使用HTTPS,而不是在C++中使用。http://www.cs.fsu.edu/~engelen/soapdoc2.html#tth#u sEc19.20)。特别是,我在soap_ssl_init()上有计算错误函数。我查看了/usr/lib/libgsoap*文件,找到了ligsoapsl++.a文件并与之链接。此错误已消失,但我获取错误:14090086:SSL例程:SSL3\u获取\u服务器\u证书:证书验证失败。这意味着我需要调用 SOAPHSLCclitOnList FUNC,但是C++中没有生成的类。我该怎么办_C++_Ssl_Https_Gsoap - Fatal编程技术网

如何在C+中使用SSL+;gSOAP生成的类 我需要在C++中使用GSOAP库,我需要使用HTTPS。文档说明如何在C中使用HTTPS,而不是在C++中使用。http://www.cs.fsu.edu/~engelen/soapdoc2.html#tth#u sEc19.20)。特别是,我在soap_ssl_init()上有计算错误函数。我查看了/usr/lib/libgsoap*文件,找到了ligsoapsl++.a文件并与之链接。此错误已消失,但我获取错误:14090086:SSL例程:SSL3\u获取\u服务器\u证书:证书验证失败。这意味着我需要调用 SOAPHSLCclitOnList FUNC,但是C++中没有生成的类。我该怎么办

如何在C+中使用SSL+;gSOAP生成的类 我需要在C++中使用GSOAP库,我需要使用HTTPS。文档说明如何在C中使用HTTPS,而不是在C++中使用。http://www.cs.fsu.edu/~engelen/soapdoc2.html#tth#u sEc19.20)。特别是,我在soap_ssl_init()上有计算错误函数。我查看了/usr/lib/libgsoap*文件,找到了ligsoapsl++.a文件并与之链接。此错误已消失,但我获取错误:14090086:SSL例程:SSL3\u获取\u服务器\u证书:证书验证失败。这意味着我需要调用 SOAPHSLCclitOnList FUNC,但是C++中没有生成的类。我该怎么办,c++,ssl,https,gsoap,C++,Ssl,Https,Gsoap,UPD:我自己解决了这个问题。但这很奇怪,非常奇怪。GSOAP生成继承自StuttSOAP的C++类,它包含以下的Trace: BIO *bio; SSL *ssl; SSL_CTX *ctx; unsigned short ssl_flags; const char *keyfile; const char *password; const char *dhfile; const char *cafile; const char *capath; const char *crlfile; co

UPD:我自己解决了这个问题。但这很奇怪,非常奇怪。GSOAP生成继承自StuttSOAP的C++类,它包含以下的Trace:

BIO *bio;
SSL *ssl;
SSL_CTX *ctx;
unsigned short ssl_flags;
const char *keyfile;
const char *password;
const char *dhfile;
const char *cafile;
const char *capath;
const char *crlfile;
const char *randfile;
SSL_SESSION *session;
BIO *bio;
SSL *ssl;
SSL_CTX *ctx;
unsigned short ssl_flags;
const char *keyfile;
const char *password;
const char *dhfile;
const char *cafile;
const char *capath;
const char *crlfile;
const char *randfile;
SSL_SESSION *session;

因此,我们可以自己在OpenSSL库中设置必要的属性(标志、参数)。在简单的情况下,只需调用一次
soap\u ssl\u init()
并设置
ssl\u标志=soap\u ssl\u NO\u身份验证
。它对我有用。如果有人知道更好的方法,我很乐意看到。

我自己解决了这个问题。但这很奇怪,非常奇怪。gSOAP生成继承自<代码>结构SOAP的C++类,包含以下内容:

BIO *bio;
SSL *ssl;
SSL_CTX *ctx;
unsigned short ssl_flags;
const char *keyfile;
const char *password;
const char *dhfile;
const char *cafile;
const char *capath;
const char *crlfile;
const char *randfile;
SSL_SESSION *session;
BIO *bio;
SSL *ssl;
SSL_CTX *ctx;
unsigned short ssl_flags;
const char *keyfile;
const char *password;
const char *dhfile;
const char *cafile;
const char *capath;
const char *crlfile;
const char *randfile;
SSL_SESSION *session;

因此,我们可以自己在OpenSSL库中设置必要的属性(标志、参数)。在简单的情况下,只需调用一次
soap\u ssl\u init()
并设置
ssl\u标志=soap\u ssl\u NO\u身份验证
。它对我有用。如果有人知道更好的方法,我会GLA/P>< P>我在C++程序中使用了GSOAP的SSL支持,而且我没有问题。我使用-DWITH_OPENSSL指令编译了源文件stdsoap2.cpp(它与gsoap一起提供)(您错过了吗?)。我使用了obj文件,并将我的程序与之链接。

我今天也遇到了同样的问题。我在VirtualBox和GSOAP2.8.21上使用了Ubuntu 14.04

<>我用命令生成C++代理类:

soapcpp2 -1 -I/opt/libraries/gsoap/build/2.8.21/share/gsoap/import -C -j temporary.h 
首先,我使用了前面提到的解决方案,并将ssl_标志设置为SOAP_ssl_NO_身份验证。由于这个错误,它消失了

此外,我观察到,在将标志更改为SOAP_TLSv1时,它也会使错误消失。引起头痛的标志是SOAP\u SSL\u REQUIRE\u SERVER\u身份验证,默认情况下,它设置在SOAP\u SSL\u默认标志中

一切似乎都很好,直到我从源代码处用标志--enable debug重新编译了gsoap。不久之后,我开始看到这样的东西:

SSL验证错误或警告,证书位于深度1:无法获取本地颁发者证书

到目前为止,我找到的最佳解决方案是从gsoap站点下载cacerts.pem文件,并将其解压缩到可执行文件旁边

当然,在您的代码中,您应该有类似的内容:

soap *soap = soap_new();
soap->ssl_flags = SOAP_SSL_DEFAULT;

soap_register_plugin(soap, soap_wsse);
soap->cafile = "cacerts.pem";
然后所有的警告和错误信息都消失了。

这对我来说很有用:

soap_ssl_client_context(m_proxy.soap, SOAP_SSL_NO_AUTHENTICATION, NULL, NULL, NULL, NULL, NULL);
其中m_proxy是使用gSOAP生成的客户端代理的实例:

wsdl2h.exe -o MyWebservice.h ..\MyWebservice.wsdl
soapcpp2.exe -IC:\gsoap-2.8\gsoap\import -j MyWebservice.h -C -1 -SL

您得到的错误是什么?
soap\u ssl\u init未定义引用
。我查看了/usr/lib/libgsoap*文件,找到了ligsoapsl++.a文件并与之链接。此错误已消失,但我获取
错误:14090086:SSL例程:SSL3\u获取\u服务器\u证书:证书验证失败
。这意味着我需要调用<代码> SOAPHSLCclitOnList FUNC,但是C++中没有生成的类。我应该怎么做?通过这样做,您可以禁用服务器证书验证,这是建立安全SSL连接的一项要求。是的,我知道。但是您可以在
const char*keyfile
const char*cafile
等中设置适当的标志为
ssl\u标志和密钥文件路径。但是在使用服务之前,您何时调用soap\u ssl\u init()<代码>soap\u ssl\u init()
导致OpenSSL库的初始化。