无法使用 libcurl 访问需要客户端身份验证的站点

2023-12-05

我使用下面的片段来设置客户端身份验证的证书和密钥。

  curl_easy_setopt(curl,CURLOPT_SSLCERT,"clientCert.pem");
  curl_easy_setopt(curl,CURLOPT_SSLCERTPASSWD,"changeit");
  curl_easy_setopt(curl,CURLOPT_SSLCERTTYPE,"PEM");
  curl_easy_setopt(curl,CURLOPT_SSLKEY,"privateKey.pem");
  curl_easy_setopt(curl,CURLOPT_SSLKEYPASSWD,"changeit");
  curl_easy_setopt(curl,CURLOPT_SSLKEYTYPE,"PEM");

该证书没有密码,我不知道为什么存在 SSLCERTPASSWD 选项,我只是提供了一个虚拟值。 当我在 Linux 上运行该程序时,我收到错误代码 58 和错误消息 无法设置私钥文件:“privateKey.pem”类型 PEM

但在 Windows 上我得到 无法使用客户端证书(未找到密钥或密码短语错误?)

似乎表明证书和密钥不匹配,但我不知道如何。我已使用 openssl 命令从 p12 文件中提取了证书和密钥。 我用来提取密钥的命令是

openssl.exe pkcs12 -in client.p12 -nocerts -out privateKey.pem

用于提取证书的命令是

openssl.exe pkcs12 -in client.p12 -nokeys -out clientCert.pem

已成功在浏览器中使用p12文件访问客户端认证url。 在我开枪自杀之前请帮忙。

编辑: 这是私钥和证书相互对应的证明:

[debugbld@nagara ~/curlm]$ openssl x509 -noout -modulus -in clientCert.pem | openssl md5
d7207cf82b771251471672dd54c59927

[debugbld@nagara ~/curlm]$ openssl rsa -noout -modulus -in privateKey.pem | openssl md5
Enter pass phrase for privateKey.pem:
d7207cf82b771251471672dd54c59927

那么为什么行不通呢?


使用命令行curl,我使用也使用openssl从p12文件获取的.pem文件遇到了同样的错误,当在浏览器中导入时,p12也能够正常工作进行客户端身份验证。我想就像你所描述的那样。

我的问题是因为 .pem 文件没有以正确的顺序列出证书而引起的:似乎文件中的每个证书都必须后跟其颁发者证书。我编辑了文件并更改了各部分的顺序,curl 很高兴.

作为记录,我的原始 .p12 文件是通过备份 Firefox 的证书获得的。

另请注意,就我而言,我没有收到输入密码的提示,而是得到了

curl: (58) unable to set private key file: 'alice.pem' type PEM

在出现密码提示之前

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法使用 libcurl 访问需要客户端身份验证的站点 的相关文章

  • 如果用户在 Laravel 中经过身份验证,如何检查 Vue 组件?

    正如标题所述 我有点困惑如何根据用户是否登录并使用 Laravel 的 Auth 外观进行身份验证 使用 if else 语句处理 Vue 组件中的方法 我正在发出各种 Axios 请求 我需要根据用户是否登录来允许 禁止这些请求 我有 V
  • 卷曲选项 -:未知

    我运行此命令在 ubuntu 18 04 上安装更新版本的 nodejs curl sL https deb nodesource com setup 12 x sudo E bash 我收到错误 curl 选项 未知 我在多个系统上尝试过
  • 使用 C# 登录《我的世界》

    我正在尝试为自己和一些朋友创建一个简单的自定义 Minecraft 启动器 我不需要启动 Minecraft 的代码 只需要登录的实际代码行 例如 据我所知 您过去可以使用 string netResponse httpGET https
  • Laravel Auth:attempt() 不会持久登录

    我在网上找到了许多有类似问题的资源 但似乎没有一个解决方案可以解决我的问题 当我使用以下代码登录用户时 一切看起来都很好 email Input get email password Input get password if Auth a
  • 客户端浏览器关闭时服务器端 Perl CGI 脚本中断

    我已经尝试解决一个小问题很长一段时间了 但似乎我无法解决 我编写了一个 HTML 页面 它在提交表单时调用 perl CGI 脚本 该 CGI 在服务器端执行一定数量的任务 我让脚本将这些任务的步骤打印到 HTML 页面上的 iframe
  • 使用 API 和curl (POST/PATCH) 将视频上传到 Vimeo

    据我了解 可以使用curl来发出POST和PATCH请求 POST https gist github com subfuzion 08c5d85437d5d4f00e58 https gist github com subfuzion 0
  • 如何解析cURL返回的header?

    我正在尝试使用 cURL 与 API 进行通信 其中一种方法要求我传递ININ ICWS CSRF Token标题 即WAhtYWxoYXlla1dBY2NvUkRJWCQxZmUxZWFhZS0xZTE0LTQyNGYtYjdhZS0zN
  • Spotify 登录错误 INVALID_CLIENT:无效的重定向 URI android

    我正在制作一个包含 Spotify 集成的应用程序 我点击了此链接https developer spotify com technologies spotify android sdk tutorial https developer s
  • 如何使用 Java 使用 Selenium WebDriver 处理 Chrome 中的身份验证弹出窗口

    我正在尝试在我的新 Webdriver 脚本之一中处理身份验证弹出窗口 我有一个适用于 IE 的可行解决方案 但我在 Chrome 上遇到了困难 IE 就像遵循 此页面 上的建议一样简单 如何使用 Java 使用 Selenium WebD
  • 将 CURL 命令行转换为 VBA

    在 CURL 中 我可以使用这一行 curl data DataToBeSent https example com resource cgi 我正在努力将此类行转换为在 VBA 中使用 这是我到目前为止的尝试 Sub POST Metho
  • Zoopla 沙箱出现 cURL http 标头错误

    我正在为房地产经纪人开发代码 以通过他们的数据源将房产上传到 Zoopla 我在将所需的配置文件添加到所需的 http 标头时遇到问题 文档中唯一的示例是来自 Linux 的测试 echo branch reference test cur
  • Go客户端程序生成大量TIME_WAIT状态的socket

    我有一个 Go 程序 它从多个 goroutine 生成大量 HTTP 请求 运行一段时间后 程序报错 connect cannot allocaterequestedaddress 当检查时netstat 我得到大量 28229 个连接T
  • JSF 身份验证:无法拦截错误消息

    我开发了一个简单的登录表单 用于我的 JSF PrimeFaces 页面
  • 将自定义参数传递给登录页面 Identity Server 4 中使用的 returnUrl

    我正在使用 IdentityServer4 为使用混合流的客户端实现身份验证服务器 我成功地实现了自己的用户存储以及自己的客户 赠款和资源存储库 当用户想要登录时 客户端会将其重定向到我的身份验证服务器 如果未登录 则会显示登录页面 此时
  • 数据未正确加载到 Firebase 应用程序中

    我在 android studio 上使用 firebase 创建了一个应用程序 使用移动 otp 进行身份验证后会出现一个搜索视图 当用户在搜索视图上搜索时 它将过滤结果并转到回收器视图等 第一次启动活动 即身份验证后的家庭活动 应用程序
  • 如何使用 HttpClient 验证 Pardot API

    我花了大约一天的时间尝试对 Pardot API 进行身份验证 它不喜欢我尝试发布消息正文的方式 所以我想发布对我有用的解决方案 如果您有任何建议或替代方案 我想听听 ServicePointManager SecurityProtocol
  • React Native + Redux 基本身份验证

    我正在寻找一种为我的反应本机应用程序创建基本身份验证的方法 我找不到任何反应本机应用程序的好例子 要登录 应用程序将电子邮件 密码 clientSecret 发送到我的服务器 如果OK 服务器返回accessToken refreshTok
  • CURL 相当于使用 VBA 的 POST JSON 数据

    我知道这与之前提出的一些问题类似 但有些东西仍然对我不起作用 如何执行以下命令 curl X POST data statements json H Content Type application json user username p
  • 使用 Spring Security 时,SecurityContext 是否在请求之间共享?

    在使用 Spring Boot 编写的 Rest API 上使用基于无状态令牌的身份验证时 我看到一些奇怪的行为 客户端在每个请求中包含一个 JWT 令牌 并且我编写的扩展 GenericFilterBean 的自定义过滤器使用以下命令将基
  • 如何在 JASPIC 中保存经过身份验证的用户?

    我开发了一个安全认证模块 SAM 并实现了validateRequest方法 我还有一个简单的 Web 应用程序配置为使用此 SAM In my validateRequest方法 我检查 clientSubject 并设置一个Caller

随机推荐

  • CSS - 具有等边距和固定大小块的响应式网格

    我正在尝试突破 CSS 的限制 以复制印刷中常见的网格布局 要求 块之间以及块与容器边缘之间的边距必须相等 布局必须具有响应性 并且每行上的块数必须适应窗口的大小 最后一行必须左对齐 块的宽度 高度是固定的 不使用空的非语义 HTML 元素
  • 使用 Powershell 将文件上传到 Sharepoint Online (Microsoft 365)(选项 1-使用 PnP.Powershell)

    我正在尝试将文件上传到 Sharepoint Online M365 库子文件夹中 但它不断出现错误 我尝试过很多脚本 这篇文章是关于使用 PnP Powershell 我已经发布了有关其他脚本的问题 希望有人可以帮助我解决其中任何一个问题
  • Spring 和 HTTP 选项请求

    作为对此的后续question 我想知道如何在 spring 3 mvc 应用程序中处理 OPTIONS 请求 我不想为我的 spring 代码中的每个端点编写选项处理方法 但是建议的选项处理程序到 的映射仅适用于还没有处理程序的端点 所以
  • 我可以在 Android 中设置 AlarmManager 的结束时间吗?

    我已经设置了一个AlarmManager在特定时间响起 然后每隔一段时间重复一次 是否可以告诉它在多少间隔后停止 甚至什么时候停止 这是我到目前为止所拥有的 Calendar calendar Calendar getInstance ca
  • 避免异步在方法签名中传播

    阻止我在 net 代码中不断使用异步 等待模式的原因是 一旦创建异步方法 async 关键字就会在我的代码中传播 迫使我使所有方法异步 有没有一种模式可以有效地阻止这种情况 阻止我在 net 代码中不断使用异步 等待模式的原因是 一旦创建异
  • 如何获得随机颜色而不重复?

    我想为每个门获得随机颜色 所以我有 9 个门 9 种材料和 9 种颜色 现在我希望每个门都获得随机颜色 但颜色不能重复 例如 不能2 种红色或 3 种蓝色 各一种 感谢帮助enter image description here 这是我尝试
  • 外国时间与当地时间

    我正在尝试将外国时间转换为当地时间 我正在获取日期和时间Europe London 目前我正在使用时刻时区来让我的代码正常工作 但是它给了我错误的输出 resultDate new moment 2017 06 30T22 10 00 tz
  • 有没有办法突出显示日历中的单元格?

    我知道有一种方法可以突出显示单元格TStringGrid 我可以使用它 但是输入日期 日期和月份将是一个大问题 除非您知道如何做到这一点 是的 如果您只对控件的源代码进行少量修改 这很容易 具体来说 我们需要在其上添加少量代码DrawCel
  • 关于 ruby​​ 哈希值的恼人问题

    为什么 ruby 有时会将哈希解释为代码块 例如 我有一个名为 required 的函数 它需要哈希值 所以我这样做 required base uri String endpoints String destination String
  • 为什么使用平均值时图表会出现尖峰?

    我在 WCF 服务中使用 messageInspectors 来测量每个服务方法的运行时间 如下所示 public void AfterCall string operationName object outputs object retu
  • 为什么 HTML 正文背景颜色不遵守边距?

    根据w3 margin元素的透明 我已经构建了一个非常基本的 HTML 页面 在 Chrome 中 检查员报告 body 的边距为 8px 但在页面上 边距全是背景色 请注意 我的书签栏和红色背景之间没有空间 我保证我没有滚动 那是怎么回事
  • 优化的浮动模糊变化

    我正在寻找 C 中的优化函数来计算浮点数的面积平均值 该函数传递一个源浮点数组 一个目标浮点数组 与源数组大小相同 数组宽度和高度 模糊 区域宽度和高度 该函数应该 环绕 边缘以进行模糊 平均值计算 以下是使用矩形进行模糊处理的示例代码 F
  • 在 iOS 应用程序中运行 python 脚本

    我需要在 ios 应用程序中运行 python 脚本 我发现这个问题在ios中运行一个简单的python脚本在回答中他包括了Python h include
  • 在没有 htaccess 的情况下用 PHP 重写 URL

    网站正在虚拟主机上运行 我们无法访问该虚拟主机 htaccess文件 但是 我想对用户友好的 URL 进行 URL 重写 例如原始网址 www example com file q name 预期网址 www example com fil
  • Python:从列表创建 pandas 数据框

    我使用以下代码从列表创建数据框 test list a b c d df test pd DataFrame from records test list columns my letters df test 上面的代码工作正常 然后我对另
  • 在Python中,如何按排序键顺序迭代字典?

    有一个现有的函数以以下结尾 其中d是一本字典 return d iteritems 返回给定字典的未排序迭代器 我想返回一个遍历已排序项目的迭代器by key 我怎么做 还没有对此进行广泛的测试 但可以在 Python 2 5 2 中使用
  • 将 SSE 转换为 Neon:如何打包然后提取 32 位结果

    我必须将以下指令从 SSE 翻译为 Neon uint32 t a mm cvtsi128 si32 mm shuffle epi8 a SHUFFLE MASK Where static const m128i SHUFFLE MASK
  • Google 地图 V3 键盘辅助功能

    我正在构建一个地图 我希望可以通过键盘访问 V3 默认情况下可以通过键盘访问 但似乎在单击地图之前您无法访问键盘功能 我添加了一个链接来选择 它将带您到包含地图的 div 标签 但这不起作用 有没有什么方法可以在不实际使用鼠标的情况下激活一
  • 如何设置JavaScript窗口对象打开的窗口中某些元素的innerHTML?

    我有一些简单的 JavaScript 代码 如下所示 该函数通过 onclick 事件调用 窗口打开正常 但元素的innerHTML 没有改变 这是我拥有的文件 所以我知道我没有被任何安全策略阻止 并且 id 为 foo 的元素肯定存在 这
  • 无法使用 libcurl 访问需要客户端身份验证的站点

    我使用下面的片段来设置客户端身份验证的证书和密钥 curl easy setopt curl CURLOPT SSLCERT clientCert pem curl easy setopt curl CURLOPT SSLCERTPASSW