【发布时间】:2011-01-02 23:40:04
【问题描述】:
我正在尝试在 Linux 下使用 OpenSSL 中的 SSL_CTX_use_PrivateKey_file 函数,但它返回 false。周围的代码已经从 Windows 移植过来,一切运行良好。根据系统的不同,有什么必须做不同的事情吗?
我自己在 Ubuntu 下编译了 OpenSSL 库(默认配置等),并且正在使用 Windows 的预编译二进制文件(从 OpenSSL 站点链接)。
证书和密钥都在 .pem 文件中。此外,还设置了密码。
以下基本上是做了什么;
SSL_CTX_set_default_passwd_cb( pContext, passwdCallback );
SSL_CTX_set_default_passwd_cb_userdata( pContext, (void*)this );
SSL_CTX_use_certificate_file( pContext, strCertificateFile, SSL_FILETYPE_PEM );
SSL_CTX_use_Privatekey_file( pContext, strPrivateKeyFile, SSL_FILETYPE_PEM ); // fail in Linux but work fine in Windows
有人有想法吗?
【问题讨论】:
-
使用
SSL_load_error_strings(),然后使用ERR_get_error()和ERR_error_string()获取错误并将其转换为可读形式。