【问题标题】:Setting Up SSL - Initial steps设置 SSL - 初始步骤
【发布时间】:2013-12-25 07:53:41
【问题描述】:

我正在尝试将我的套接字程序转换为 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:

【问题讨论】:

    标签: c sockets ssl openssl


    【解决方案1】:

    从错误来看,它似乎无法找到my_server.pem 文件。即使它与您的 C 代码位于同一位置,您的程序也可以访问它,因为它会出现在工作目录中。

    因此,要么将文件移动到应用程序的工作目录,要么给出指向该文件的文件的相对或绝对路径。

    要进一步诊断,请在读取模式下使用fopen 打开文件,如果失败,请查看最后一个错误。

    如果您的fopen 能够打开文件,则说明存在其他问题。

    【讨论】:

    • 谢谢。我不能使用绝对路径,否则在另一台机器上使用一分钟就会失败。至于相对路径,不知道怎么给同一个目录的相对路径。
    • 你的exe和C文件在同一个文件夹吗?
    • 如果没有,请将您的证书文件放在与 exe 相同的位置。并确保这是一个有效的证书文件。
    • “证书文件”是指 my_server.pem 吗?这与 .exe 位于同一文件夹中。我需要将其他文件添加到此文件夹吗?
    【解决方案2】:

    尝试提供完整路径而不是 "my_server.pem" example here

    或者,尝试使用null 代替"my_server.pem" 并使用目录路径 代替null refernce here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-10
      • 2020-04-16
      • 2014-09-13
      相关资源
      最近更新 更多