2013-12-08 4 views
0

소켓 프로그램을 SSL로 변환하려고합니다. 나는 단지 초기 설정을 준비 중이고 해결 방법을 모르는 런타임 오류가 발생했습니다. 참고 : c 파일과 동일한 디렉토리에 'my_server.pem'이라는 파일이 있습니다.SSL 설정 - 초기 단계

아무도 도와 줄 수 있습니까? 감사! 이 my_server.pem 파일을 찾을 수없는 것 같습니다, 오류에서

140735285130080:error:02001002:system library:fopen:No such file or directory:bss_file.c:169:fopen('my_server.pem','r') 
140735285130080:error:2006D080:BIO routines:BIO_new_file:no such file:bss_file.c:172: 
140735285130080:error:0B084002:x509 certificate routines:X509_load_cert_crl_file:system lib:by_file.c:274: 

답변

0

:

#include <openssl/bio.h> // BIO objects for I/O 
#include <openssl/ssl.h> // SSL and SSL_CTX for SSL connections 
#include <openssl/err.h> // Error reporting 

int main(int argc, char *argv[]) { 

    // data structures for SSL 
    BIO *bio; 
    SSL *ssl; 
    SSL_CTX *ctx; 

    // initialize openSSL 
    SSL_load_error_strings(); 
    ERR_load_BIO_strings(); 
    OpenSSL_add_all_algorithms(); 

    // set up the SSL context 
    ctx = SSL_CTX_new(SSLv23_client_method()); 

    if (ctx == NULL) 
     fprintf(stderr, "context is null\n"); 

    // load the trust store 
    if (! SSL_CTX_load_verify_locations(ctx, "my_server.pem", NULL)) { 
     fprintf(stderr, "Error loading trust store\n"); 
     ERR_print_errors_fp(stderr); 
     SSL_CTX_free(ctx); 
     return 0; 
    } 
    fprintf(stderr, "made it\n"); 

    //... 

    return 0; 
} 

이 오류 메시지입니다. C 코드와 동일한 위치에 있더라도 작업 디렉토리에있을 때 프로그램 이름에 그대로 액세스 할 수 있습니다.

따라서 파일을 응용 프로그램의 작업 디렉토리로 이동하거나이 파일을 가리키는 파일에 상대 경로 또는 절대 경로를 지정하십시오.

더 자세히 진단하려면 fopen 파일을 읽기 모드로 열고 실패 할 경우 마지막 오류를 확인하십시오.

fopen이 파일을 열 수 있으면 다른 문제가 있습니다.

+0

감사합니다. 절대 경로를 사용할 수 없거나 다른 컴퓨터에서 사용되는 분은 실패합니다. 상대 경로에 대해서는 동일한 디렉토리에 상대 경로를 지정하는 방법을 알지 못합니다. – Alex

+0

exe가 C 파일과 같은 폴더에 있습니까? – doptimusprime

+0

그렇지 않으면 인증서 파일을 exe와 같은 위치에 저장하십시오. 유효한 인증서 파일인지 확인하십시오. – doptimusprime

0

"my_server.pem"example here 대신 전체 경로를 입력 해보십시오.

또는 대안 적으로, null 대신 "my_server.pem"의 넣어 시도하고 nullrefernce here 대신 디렉토리에 경로를 넣어.