我試圖將套接字程序轉換爲SSL。我只是佈局初始設置,並且遇到了一些我不知道如何解決的運行時錯誤。注意:在c文件所在的目錄中有一個名爲'my_server.pem'的文件。設置SSL - 初始步驟
任何人都可以幫助我嗎?謝謝!
#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;
}
這些錯誤信息:
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:
謝謝。我不能使用絕對路徑,否則這個分鐘會在另一臺機器上使用。至於相對路徑,我不知道如何給相同的目錄提供相對路徑。 – Alex
你的exe文件與C文件在同一個文件夾中嗎? – doptimusprime
如果不是,則將您的證書文件放在與exe相同的位置。並確保這是一個有效的證書文件。 – doptimusprime