我有一个server.pem和一个server.jks用于后端,这是我的客户端(soapui)。我初始化ssl服务器上下文,以便为我的Web服务启用简单身份验证,如下所示:
int ssl_connection_flag = SOAP_SSL_DEFAULT; // Simple authentication
int soap_result = soap_ssl_server_context(soap_object,
ssl_connection_flag,//SOAP_SSL_NO_AUTHENTICATION,//m_ssl_connection_flag,
m_key_file.c_str(),//Settings::instance()->get_cert_mngr_tls_certificate_path().c_str(),//"D:\\ICA\\Release\\currentStore\\TLSCertificate.pem",//m_ssl_private_key_file_path.c_str(),/* keyfile: required when server must authenticate to clients (see SSL docs on how to obtain this file) */
l_recover.c_str(),//"changeit",//PWDHelper::instance()->retrieve_pwd("k-tls-key").c_str(),//"changeit",//"12345678",//"server_key_password",/* password to read the key file (not used with GNUTLS) */
m_ca_certs_file.c_str(),//Settings::instance()->get_cert_mngr_ca_path().c_str(),//"D:\\ICA\\Release\\currentStore\\CA.pem",//"D:\\CertificatBrahim\\CAs.pem",//m_ssl_ca_file_path.c_str(), /* optional cacert file to store trusted certificates */
NULL, /* optional capath to directory with trusted certificates */
NULL,/* DH file name or DH key len bits (minimum is 512, e.g. "512") to generate DH param, if NULL use RSA */
NULL,
NULL);
麻烦的是,当我从SoapUI发送请求到位于我的服务器的远程PC后,我在wireshark中寻找。解码看起来像是在进行相互认证。
但是当我改变时
SOAP_SSL_DEFAULT
带
SOAP_SSL_NO_AUTHENTICATION
,并在wireshark中发送了相同的请求,看起来有一个简单的(只有服务器身份验证)正在进行。
但这让我感到困惑,因为如果我遵循gSoap文档,TLS / SSL选项SOAP_SSL_NO_AUTHENTICATION,则禁用客户端和服务器身份验证。
然后我的问题是我做错了什么?
提前感谢您的回复。
最好的问候。
答案 0 :(得分:0)
服务器端的SOAP_SSL_NO_AUTHENTICATION
标志不会阻止客户端请求服务器进行身份验证。此标志禁用对等方向请求方进行身份验证的要求。在您的情况下,客户端是请求方,标志位于服务器端。