GSOAP — параметры мыла_ssl_client_context()C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 GSOAP — параметры мыла_ssl_client_context()

Сообщение Anonymous »

Я хочу использовать gSOAP для подключения веб-служб HTTPS. Я узнал о том, как использовать gSOAP, — сначала вызвать Soap_ssl_client_context(), пример, который я нашел здесь:

Код: Выделить всё

 if (soap_ssl_client_context(
&soap,            //1
SOAP_SSL_DEFAULT, //2
"client.pem",    //3 /* keyfile: required only when client must authenticate to server (see SSL docs on how to obtain this file) */
"password",      //4 /* password to read the key file (not used with GNUTLS) */
"cacerts.pem",   //5 /* cacert file to store trusted certificates (needed to verify server) */
NULL,            //6 /* capath to directory with trusted certificates */
NULL             //7 /* if randfile!=NULL: use a file with random data to seed randomness */
))
{
soap_print_fault(&soap, stderr);
exit(1);
}
Но я не могу найти никакой документации о деталях параметров. Мои вопросы:
  • 5-й параметр говорит, что это должен быть «файл cacert». Все образцы используют формат PEM. Поддерживает ли он другие форматы, такие как DER/PKCS? Или только ПЕМ? Я попытался использовать файл DER, он сгенерировал ошибку «Невозможно прочитать файл сертификата CA».
  • 6-й, он говорит, что это должен быть «путь к каталогу», но как это работает? Например. все файлы в этом каталоге ДОЛЖНЫ быть файлами сертификатов? Он будет перебирать все файлы сертификатов в каталоге до тех пор, пока проверка не пройдет успешно?
----------------Обновление ---------------

Что касается вопроса № 1, я проверил исходный код в gSoap и OpenSSL и обнаружил, что он использует функцию PEM (x.509) для загрузки файла сертификата.

Код: Выделить всё

soap_init()
{
//...
soap->fsslauth = ssl_auth_init;
//...
}

soap_ssl_client_context()
{
//...
soap->cafile = cafile;
//...
return soap->fsslauth(soap);
}

ssl_auth_init()
{
//...
SSL_CTX_set_client_CA_list(soap->ctx, SSL_load_client_CA_file(soap->cafile));
//...
}

SSL_load_client_CA_file
{
//...
if (PEM_read_bio_X509(in,&x,NULL,NULL) == NULL)
//...
}
Большое спасибо,

Эйди

Подробнее здесь: https://stackoverflow.com/questions/187 ... nt-context
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»