我目前正在尝试在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
希望您能帮助我。
答案 0 :(得分:0)
所以问题出在libcurl内
库名使用linux名称进行硬编码,如果未加载libnssckbi,我们将无法加载根据此https://github.com/curl/curl/pull/3016修改的第二部分证书。
如果不想重新编译libcurl,一个快速解决方案是将nssckbi.dll重命名为libnssckbi.so