SSL_CTX_use_PrivateKey_file在Linux下失败

时间:2010-01-08 16:07:21

标签: c++ linux openssl

我正在尝试在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

有没有人有想法?

1 个答案:

答案 0 :(得分:2)

为了简单起见,我从密码回调中删除了所有代码,并且简单pBuf = "mypass"; return 6;这将是回调函数的最小值。这很好。

那么Windows代码和Linux代码之间有什么不同?好吧,分别调用strcpy_sstrcpy是代码中唯一的区别。这两者之间有什么不同(除了额外的验证参数)?

要验证字符串复制操作是否成功,代码只检查相等为0.但是,两个复制函数的返回值具有不同的规范。微软将“strcpy”的返回行为从“0表示错误”更改为“0表示成功”。叹息......