我正在尝试连接需要相互 SSL 身份验证的 SOAP 服务。
我们创建了一个自签名证书并将其传输给服务运营商,以便他们验证我们的连接。同样,他们向我们发送了他们的 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 连接,但我遇到了问题.
我假设我应该使用my_key.pem的路径作为keyfile
参数,但是使用 gdb,我可以看到它SSL_CTX_use_certificate_chain_file()
是失败的调用。gSOAP 将keyfile
参数作为file
参数传递给此调用。
任何帮助深表感谢。