libcurl-NSS使用tls构建了Imap:SSL CA证书(路径?访问权限?)窗口

时间:2018-08-27 09:36:15

标签: c windows ssl libcurl nss

我目前正在尝试在Windows应用程序上使用libcurl创建imap客户端。 我正在使用libsurl的预构建版本,该版本具有NSS支持,但没有OpenSSL支持(由上级决定),当我尝试使用URL imaps:// serveraddress / inbox连接到我的服务器时,将CURLOPT_USE_SSL设置为CURLUSESSL_ALL和CURLOPT_CAINFO到cert8.db中我的证书昵称,我得到

* Trying servAdress...
* TCP_NODELAY set
Connected to servAdress (servAdress) port portn(#0)
WARNING: failed to load NSS PEM library libnsspem.so. Using OpenSSL PEM certificates will not work.
CAfile: certname
CApath: none
    *Closing connection 0
curl_easy_perform() failed: Problem with the SSL CA cert (path? access rights?)

我尝试将CURLOPT_SSLCERT设置为我的certName,但是除了添加以下行之外,我得到了相同的错误:

* Initializing NSS with certpath: sql:C:\Users\mlegros\SSL_DB\

我的问题是,有没有办法在libcurl中的imap中使用NSS db证书?

Windows dll尝试加载.so文件也是正常的吗(如果我没记错的话,它是Linux格式)?

ps:这是我的版本信息

  • 卷曲版本7.58.0

  • NSS 3.34.1

  • 编译器:MSVC 14.12.25827

希望您能帮助我。

1 个答案:

答案 0 :(得分:0)

所以问题出在libcurl内

库名使用linux名称进行硬编码,如果未加载libnssckbi,我们将无法加载根据此https://github.com/curl/curl/pull/3016修改的第二部分证书。

如果不想重新编译libcurl,一个快速解决方案是将nssckbi.dll重命名为libnssckbi.so