首页 > 解决方案 > curl 命令有效,但 C 程序失败 NSS:找不到客户端证书(未指定昵称)

问题描述

有许多类似的帖子,但我试图了解的不仅仅是那些提供的内容。我的 curl 命令行工作正常,能够与服务器通信并获取我想要的数据。该命令看起来像

curl -v --tlsv1.2 --cert ./service_cert.pem  --key ./service_private.key  "https://myserver"

但是当我尝试运行我的 C 程序并检查 http 客户端对象时,我看到了这个

errorBuffer = "NSS: client certificate not found (nickname not specified)

进一步阅读我意识到我有使用 NSS 构建的 libcurl,它不支持从平面文件(.pem)中读取证书


那么命令行 curl 实用程序如何能够读取 pem 文件?

标签: sslopenssllibcurlnss

解决方案


您需要使用 将您的客户端证书导入 NSS 数据库,certutil并让您的代码使用此数据库。

参考:

https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/tools/NSS_Tools_certutil


推荐阅读