Я работаю над файловым сервером win32, который был закодирован с использованием Visual Studio 6.0. Он настроил SSL и работал в 2000 году, но с тех пор не использовался.Сервер не работает при инициализации Openssl
Теперь мы хотим использовать SSL (Opensll), поэтому я обновил библиотеки и т. Д. И имею сервер, работающий с SSLv3 и TLS, когда сервер запускается как консольное приложение.
Как только я запускаю сервер в качестве службы Windows, процедура инициализации ssl вылетает без сообщений об ошибках. Вот код, который вызывает все горе.
int SwiftSSL::Initialize()
{
SSLeay_add_ssl_algorithms();
SSL_load_error_strings();
ctx_ = SSL_CTX_new(SSLv23_server_method());
if(!ctx_) {
LogEvent("SSL_CTX is bad.");
return false;
}
LogEvent("Before using cert and private key file.");
if (SSL_CTX_use_certificate_file(ctx_, CERT_FILE, SSL_FILETYPE_PEM) == 1) {
LogEvent("SUCCESS SSL_CTX_use_certificate_file.");
}
else {
LogEvent("FAILED SSL_CTX_use_certificate_file.");
return false;
}
if (SSL_CTX_use_PrivateKey_file(ctx_, KEY_FILE, SSL_FILETYPE_PEM) == 0) {
LogEvent("Failed SSL_CTX_use_PrivateKey_file.");
return false;
}
else {
LogEvent("SUCCESSFUL SSL_CTX_use_PrivateKey_file.");
}
if (SSL_CTX_check_private_key(ctx_) == 0) {
ERR_print_errors_fp(stderr);
LogEvent("Failed SSL_CTX_check_private_key");
return false;
}
LogEvent("Successfully used cert and private key file.");
return true;
}
При запуске в качестве службы Windows, единственное сообщение вошедшего является: «Перед использованием сертификата и секретного ключа файла.»
Ничего другого не зарегистрировано. Это для меня означает, что команда SSL_CTX_use_certificate_file (ctx_, CERT_FILE, SSL_FILETYPE_PEM) сбой.
Но почему это работает без проблем, когда одна и та же программа запускается как консоль?
Это информация, которую я нашел в окне просмотра событий:
описание для события с кодом (0) в источнике (OpenSSL) не могут быть найдены. Локальный компьютер может не иметь необходимой информации реестра или сообщения DLL файлов для отображения сообщений с удаленного компьютера. Следующая информация: Входящие Подробности: OPENSSL_Uplink (00341000,08): no OPENSSL_Applink
Любая помощь будет принята с благодарностью.