У меня есть веб-сервис WCF, который необходимо защищать с использованием протокола SSL/TLS. С другой стороны, у меня есть клиент C++, который использует веб-службу WCF, используя gSOAP library. Уже только сервер должен иметь сертификат. Теперь у меня есть задача заставить клиента иметь сертификат. Моя ранее реализация для клиента, как это:Добавить сертификат для сервера и клиента с использованием WCF и gSOAP
soap_ssl_init();
int soapResult = soap_ssl_client_context(soapPtr, SOAP_SSL_NO_AUTHENTICATION, "client.pem", NULL,
NULL, "cacert.pem", NULL);
if (soapResult)
{
soap_print_fault(soapPtr, stderr);
throw new ClientLogException("Can not use ssl for comminucations!");
}
else
{
}
struct soap mySoap = *soapPtr;
WSHttpBinding_USCOREILogServicesProxy proxy(mySoap);
input.request = &request;
int callCode = proxy.CallWebService(WEB_SERVICE_ADDRESS, NULL, &input, response);
if (callCode != 0)
{
cout << "Web service call code: " + callCode << endl;
throw new ClientLogException("Error in calling web service with call code: " + callCode);
}
который я это делает из gSOAP documents. Он отлично работает с сервером, требующим наличия сертификата. Я просмотрел связь с помощью WireShark, и соединение было полностью зашифровано.
Теперь для обеспечения использования клиентом сертификата, я собираюсь использовать статью Nine simple steps to enable X.509 certificates on WCF. Но в статье используется клиент C# WCF. Я должен реализовать клиентскую конфигурацию в моем клиенте gSOAP C++. Я могу добавить сертификат клиента в код выше при вызове soap_ssl_client_context
и в третьем параметре.
У меня есть 2 проблемы здесь:
1- я не знаю, есть возможность вызова веб-службы, что клиент и сервер имеют сертификаты и связь крепиться, когда сервер использует WCF и клиент использует gSOAP.
2- В статье CodeProject кажется, что вызов веб-службы использует http, и я удивляюсь, что в связи с этим отсутствует шифрование.
В конце концов, если у кого-то есть лучшее решение или порекомендуется использовать другие инструменты.