我需要在 C++ 中使用 gsoap 库,我需要使用 https。文档说明了如何在 C 中使用 HTTPS,而不是在 C++ 中(http://www.cs.fsu.edu/~engelen/soapdoc2.html#tth_sEc19.20)。特别是,我在函数上有计算错误soap_ssl_init();
。我查看了 /usr/lib/libgsoap* 文件并找到了 ligsoapssl++.a 文件并链接到它。这个错误已经消失了,但我明白了error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
。这意味着我需要调用soap_ssl_client_context
func,但 C++ 生成的类中没有。我应该怎么办?
UPD:我自己解决了这个问题。但它很古怪,非常古怪的方式。gSOAP 生成从 struct 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;
因此我们可以像在 OpenSSL 库中一样自行设置必要的属性(标志、参数)。在简单的情况下,调用soap_ssl_init()
一次并设置就足够了ssl_flags = SOAP_SSL_NO_AUTHENTICATION
。这个对我有用。如果有人知道更好的方法,我会很高兴看到。