如何在C++ gSOAP生成的类中使用SSL

mil*_*ilo 7 c++ ssl https gsoap

我需要在C++中使用gsoap库,我需要使用https.文档说明了如何在C中使用HTTPS,但在C++中却没有(http://www.cs.fsu.edu/~engelen/soapdoc2.html#tth_sEc19.20).特别是,我在soap_ssl_init();功能上有编译错误.我查了/ usr/lib/libgsoap*文件,找到了ligsoapssl ++.一个文件并链接到它.这个错误消失了,但我明白了error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed.这意味着我需要调用soap_ssl_client_contextfunc,但是在C++中没有生成类.我该怎么办?

UPD:我自己解决了这个问题.但它是古怪的,非常古怪的方式.gSOAP生成继承自struct soap的C++类,它包含以下attrs:

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;
Run Code Online (Sandbox Code Playgroud)

所以我们可以自己在OpenSSL库中设置必要的attrs(flags,params).在简单的情况下,它足以调用soap_ssl_init()一次并设置ssl_flags = SOAP_SSL_NO_AUTHENTICATION.这个对我有用.如果有人知道更好的方式,我会很高兴看到.

mil*_*ilo 1

我自己解决了这个麻烦。但这是一种古怪、非常古怪的方式。gSOAP 生成继承自 的 C++ 类struct soap,它包含以下属性:

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;
Run Code Online (Sandbox Code Playgroud)

因此我们可以像 OpenSSL 库中一样自行设置必要的属性(标志、参数)。在简单的情况下,调用soap_ssl_init()一次并设置就足够了ssl_flags = SOAP_SSL_NO_AUTHENTICATION。这个对我有用。如果有人知道更好的方法我会很高兴

  • 通过执行此操作,您可以禁用服务器证书验证,这是建立安全 SSL 连接的要求。 (2认同)