服务器和客户端使用相同的自签名证书(curl with --cacert)但https fetch仍然失败?

时间:2018-02-26 18:59:56

标签: curl openssl ssl-certificate tls1.2 self-signed

我遵循各种教程和stackoverflow问题来学习如何创建自签名证书,确保它具有服务器alt名称,使用它为快速服务器配置https,并成功地从浏览器向服务器发出请求(之后)将证书作为受信任的证书添加到浏览器中。)

我重新下载了证书如下: openssl s_client -showcerts -servername mydevserver -connect mydevserver:443 </dev/null

然后我将“开始证书”和“结束证书”之间的文本复制到/etc/ssl/thecert.crt

使用命令行工具点击同一个https端点不起作用,例如: curl -v --cacert "/etc/ssl/thecert.crt" -H "Content-Type: application/json" https://mydevserver:443/api

我可以在详细输出中看到使用cacert的curl,但它仍然抱怨: SSL certificate problem: unable to get local issuer certificate

  • 证书本身是否配置错误(如果是,浏览器如何接受它?)
  • 我还缺少什么?

1 个答案:

答案 0 :(得分:0)

事实证明,自签名的证书不足以使其值得信赖&#34;。它需要由证书颁发机构签名。

  1. 我必须首先使用a创建自己的证书颁发机构(CA) 自签名证书,然后使用该结果证书 为相关服务器签署一份全新的CSR /证书。

  2. 然后,一旦将CA证书添加到本地CA存储中,curl就不会 甚至还需要--cacert参数;像其他https客户端一样 它可以验证从服务器收到的证书,因为它 将说我的CA签署,在本地机器上受信任。

  3. 希望这有助于某人。