首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >curl --cacert错误"curl:(60) SSL:没有可供选择的证书主题名称与目标主机名匹配“

curl --cacert错误"curl:(60) SSL:没有可供选择的证书主题名称与目标主机名匹配“
EN

Stack Overflow用户
提问于 2020-07-26 14:10:20
回答 2查看 11.3K关注 0票数 2

curl: (60) SSL: no alternative certificate subject name matches target host name

我不明白这个错误。如果我提供了一个CA证书(带有--cacert选项),它甚至没有主题可选名称。如果它有一个,那么它肯定与目标主机名(我的服务器)不匹配。

另一方面,如果我提供与 CA 签名的服务器证书,它会写成:SSL certificate problem: unable to get local issuer certificate. (这是我所期望的,因为我的计算机默认不信任CA,这是正确的)。

当将PEM证书组合到一个文件中时,我会得到相同的错误。

使用选项--capath设置为具有服务器和CA证书的目录,它再次声明:curl: (60) SSL certificate problem: unable to get local issuer certificate

如何使信任检查有效?

(它在使用单个自签名服务器证书时起作用。)

EN

Stack Overflow用户

发布于 2020-07-28 07:14:43

这里有两种不同的几乎不相关的东西。

对于使用OpenSSL的curl,如您所用,根证书(通常是CA)必须位于--cacert指定的文件中,或者在--capath目录中使用特殊的文件名,该文件名由规范化主题名加点和零(或如果不指定的话是一个小数字)和0(或如果没有指定的话是一个小数字)的8 hexit截断散列组成;除非(至少)其中一个文件存在,否则您将得到“无法获得本地颁发者”错误;

而且,服务器发送的服务器证书(通常不是CA证书)必须在SubjectAltName (SAN)扩展名中(如果存在),在Subject.CommonName (CN)中包含与您试图访问的URL中的主机名匹配的主机名。如果服务器证书包含SAN扩展,但该扩展名中没有与URL匹配的条目,则在标题中会出现错误;参见Fix CURL (51) SSL error: no alternative certificate subject name matches

自签名服务器证书与通常情况不同,因为它同时充当根证书和服务器证书,因此它必须在--cacert--capath或它们的默认值中(尽管正确地说它不是CA),并且包含匹配该URL的SAN (或在不包含CN的情况下)。

PS:如果无法确定服务器发送的证书(可能是因为配置比较复杂,或者不确定是否重新启动或刷新),请使用

代码语言:javascript
运行
复制
 openssl s_client -connect $host:$port -servername $host 2>&1 | openssl x509 -noout -text 
 # if OpenSSL version 1.1.1 you can omit -servername $host
票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63101263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档