我正尝试使用需要相互SSL身份验证的SOAP服务进行连接。使用gSOAP进行相互SSL身份验证
我们创建了一个自签名证书并将其传递给服务运营商,以便他们验证我们的连接。同样,他们向我们发送了他们的ssl证书副本。
我已经能够成功连接到通过使用openssl s_client并手动输入HTTP请求,标头和SOAP内容从服务中获得期望的SOAP响应。 我使用类似于以下,使成功连接的参数:自我的
openssl s_client -connect example.com:443 -key my_key.pem -cert my_cert.pem -pass file:my_passphrase
- my_key.pem是我的私有密钥
- my_cert.pem的文件名,文件名签发的证书转发给服务运营商。
- my_passphrase包含私钥的密码。
我现在试图使用gSOAP及其C绑定来访问相同的服务。我按照http://www.cs.fsu.edu/~engelen/soapdoc2.html的文档创建了服务WSDL绑定,并添加了一个调用soap_ssl_client_context()
来建立SSL连接,但我遇到了一个问题。
我认为我应该为keyfile
参数使用路径来my_key.pem,但使用gdb的,我可以看到,它是SSL_CTX_use_certificate_chain_file()
进行通话的失败。 gSOAP传递keyfile
参数作为此调用的参数file
。
任何帮助,非常感谢。