ssl - 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 文件?
解决方案
您需要使用 将您的客户端证书导入 NSS 数据库,certutil
并让您的代码使用此数据库。
参考:
https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/tools/NSS_Tools_certutil
推荐阅读
- verilog - 有人可以解释为什么这会导致组合反馈循环吗?(Vivado Verilog)
- sql - 如何找到具有特定列的所有值的设备?
- visual-studio - NUnit 忽略了运行设置文件中的 DomainUsage
- html - CSS在移动屏幕上隐藏子组件
- c# - 在一个列表中分组多个组时出错
- jenkins - 在 Jenkins VIA API 中创建 P4 凭证
- javascript - 如何确定 ::before 是否应用于元素?
- c# - 使用 ADFS ASP.NET MVC 登录后如何更改重定向控制器?
- java - 什么在 Windows 上将命令行 args 解析为 args[]?
- amazon-web-services - 其他人在我的 AWS S3 存储桶中创建的对象的访问权限被拒绝