2014-12-12 4 views
1

Visual Studio 6.0을 사용하여 코딩 된 win32 파일 서버에서 작업하고 있습니다. SSL을 구성하고 2000 년에 다시 작동했지만 이후 사용되지 않았습니다.Openssl 초기화시 서버가 작동하지 않습니다.

이제 SSL (Openensl)을 사용하여 서버 등을 콘솔 앱으로 실행할 때 라이브러리 등을 업데이트하고 SSLv3 및 TLS로 서버를 작동하도록했습니다.

서버를 Windows 서비스로 실행하자마자 ssl 초기화 루틴이 오류 메시지없이 중단됩니다. 모든 슬픔의 원인이되는 코드는 다음과 같습니다. Windows 서비스, 기록 된 유일한 메시지로 실행

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

은 다음과 같습니다 를 "인증서 및 개인 키 파일을 사용하기 전에."

그 밖의 정보는 기록되지 않습니다. 즉, 내게는 SSL_CTX_use_certificate_file (ctx_, CERT_FILE, SSL_FILETYPE_PEM) 명령이 충돌하고 있음을 의미합니다.

하지만 같은 프로그램을 콘솔로 실행할 때 문제가없는 이유는 무엇입니까? 소스 (은 OpenSSL)에서 이벤트 ID (0)에 대한

설명을 찾을 수 없습니다 :

이것은 내가 이벤트 뷰어에서 볼 수있는 정보입니다. 로컬 컴퓨터에 원격 컴퓨터의 메시지를 표시하는 데 필요한 레지스트리 정보 나 메시지 DLL 파일이 없을 수 있습니다. 다음 정보는 이벤트의 일부입니다 : OPENSSL_Uplink (00341000,08) : 아니오 OPENSSL_Applink

아무 도움이됩니다.

답변

0

확인. 나는이 상황에 대한 해결책으로 오늘 아침에 일어났다. 결국 Windows 서비스는 CERT_FILE 또는 KEY_FILE을 찾을 위치를 알지 못했습니다. Windows 서비스로 실행되는 앱은 % WinDir % \ System32 디렉토리의 파일을 검색합니다. app 디렉토리에 파일이 있으므로 SSL_CTX_use_certificate_file 및 SSL_CTX_use_PrivateKey_file을 호출 할 때 파일에 대한 실제 경로를 추가해야했습니다.

이제 정상적으로 작동합니다.

관련 문제