我目前正在尝试在Windows应用程序上使用libcurl制作imap客户端。 我正在使用带有 NSS 支持的预构建版本的 libCurl,但没有 OpenSSL 支持(这是由上级决定的(,当我尝试使用 URL imaps://serveraddress/inbox 连接到我的服务器时,CURLOPT_USE_SSL设置为 CURLUSESSL_ALL,并在 cert8 中CURLOPT_CAINFO我的证书昵称.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:UsersmlegrosSSL_DB
我的问题是有没有办法在 libcurl 中使用带有 IMAP 的 NSS 数据库证书?
Windows DLL尝试加载.so文件(如果我没记错的话,它是Linux格式(也是正常的吗?
PS:这是我的版本信息
curl 版本 7.58.0
战国策 3.34.1
- 编译器:MSVC 14.12.25827
希望你能帮助我。
所以问题出在 libcurl 中
库名称是用 Linux 名称硬编码的,如果未加载 libnssckbi,我们将无法加载根据此 https://github.com/curl/curl/pull/3016 修改的第二部分的另一个证书。
如果您不想重新编译 libcurl,一个快速解决方法是将 nssckbi 重命名.dll
重命名为 libnssckbi.so