как да инициализирате сървърния контекст с помощта на gsoap, за да активирате просто удостоверяване (удостоверяване само на сървъра)

Имам server.pem и server.jks за back-end, който е моят клиент (soapui). Инициализирам контекста на ssl сървъра, за да активирам просто удостоверяване за моята уеб услуга, както следва:

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);

Проблемът е, че когато търся в wireshark, след като изпратих заявката си от SoapUI до отдалечен компютър, където се намира моят сървър. Декодирането изглежда, че се извършва взаимно удостоверяване.

Но когато се променя

SOAP_SSL_DEFAULT

с

SOAP_SSL_NO_AUTHENTICATION

, и изпрати същата заявка, в wireshark изглежда, че се извършва просто (само удостоверяване на сървъра).

Но това ме обърква, защото ако следвам документацията на gSoap, TLS/SSL опцията SOAP_SSL_NO_AUTHENTICATION деактивира както клиентската, така и сървърната автентификация.

Тогава въпросът ми е какво правя грешно?

благодаря предварително за вашите отговори.

С Най-Добри Пожелания.


person R. Many    schedule 02.06.2017    source източник


Отговори (1)


Флагът SOAP_SSL_NO_AUTHENTICATION от страната на сървъра не пречи на клиента да поиска от сървъра удостоверяване. Този флаг деактивира изискването партньор да удостоверява автентичността на искащата страна. Във вашия случай клиентът е искащата страна и флагът е зададен от страната на сървъра.

person Dr. Alex RE    schedule 06.07.2017
comment
Благодаря за вашия отговор - person R. Many; 07.07.2017