簡體   English   中英

設置SSL-初始步驟

[英]Setting Up SSL - Initial steps

我正在嘗試將套接字程序轉換為SSL。 我只是在布局初始設置,遇到了一些我不知道如何解決的運行時錯誤。 注意:在與c文件相同的目錄中有一個名為“ my_server.pem”的文件。

誰能幫我? 謝謝!

#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:

根據該錯誤,似乎無法找到my_server.pem文件。 即使它位於C代碼的相同位置,當程序出現在工作目錄中時,也可以按其名稱對其進行訪問。

因此,可以將文件移動到應用程序的工作目錄中,或者提供指向該文件的相對或絕對路徑。

為了進一步診斷,請在讀取模式下使用fopen打開文件,如果失敗,請查看最后一個錯誤。

如果您的fopen能夠打開文件,則還有其他問題。

嘗試在此處提供完整路徑,而不是"my_server.pem" 示例

或者,嘗試將null而不是"my_server.pem"放在這里, 並在目錄中放置路徑而不是null 引用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM