Я пытаюсь ограничить список шифров на моем сервере gsoap ssl с помощью SSL_CTX_set_cipher_list ().Но метод возвращает 0, независимо от того, какой список я предоставляю.Без настройки списка все работает нормально.
В основном я делаю то же самое, что и в документации gsoap https://www.genivia.com/doc/guide/html/group__group__ssl.html#ga3492465cdd8aa71fe746199d3842cac7
auto err = BIO_new_fp(stderr, BIO_NOCLOSE);
SSL_load_error_strings();
OpenSSL_add_all_algorithms();
OpenSSL_add_all_ciphers();
CalculatorSoapBindingService service;
service.soap->send_timeout = service.soap->recv_timeout = 5;
if (useSSL) {
soap_ssl_init(); // init SSL (just need to do this once in an application)
if (soap_ssl_server_context(
service.soap,
SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION | SOAP_TLSv1 | SOAP_SSL_NO_DEFAULT_CA_PATH,
"server.pem", // server keyfile (cert+key)
"password", // password to read the private key in the keyfile
nullptr, // no cert to authenticate clients
nullptr, // no capath to trusted certificates
nullptr, // DH/RSA: use 2048 bit RSA (default with NULL)
nullptr, // no random data to seed randomness
"testServer" // no SSL session cache
))
{
service.soap_stream_fault(std::cerr);
exit(EXIT_FAILURE);
}
const char allowedCiphers[] = "ALL:!aNULL";
auto rc = SSL_CTX_set_cipher_list(service.soap->ctx, allowedCiphers);
if (rc != 1) {
ERR_print_errors(err);
exit(EXIT_FAILURE);
}
}
Согласно документации код возврата 0 означаетполный провал.Сообщение об ошибке: 140347788101304: ошибка: 1410D0B9: подпрограммы SSL: SSL_CTX_set_cipher_list: нет совпадения шифров: ssl_lib.c: 1385: при запуске «шифров openssl» я получаю полный список шифров.Есть идеи, что мне не хватает?Неправильно ли инициализирован контекст?