如何解决"证书主题名称与目标主机名不匹配"的错误?

Mik*_*ike 7 wso2 wso2esb wso2carbon wso2-api-manager api-manager

  curl -X GET --header 'Accept: application/json' --header 'Authorization: Bearer 90d2c018-73d1-324b-b121-a162cf870ac0' 'https://172.17.0.1:8243/V1.0.2/stock/getNA?name=te'
Run Code Online (Sandbox Code Playgroud)

终端提示

"curl:(51)SSL:证书使用者名称(localhost)与目标主机名"172.17.0.1"不匹配

Howerver,在我将"172.17.0.1"更改为"localhost"后,它工作并获得了结果.

为什么?是不是有错误的配置?同时,http_access.log中没有登录.

Jen*_*han 5

当ssl握手发生时,客户端将验证服务器证书。在验证过程中,客户端将尝试将证书的通用名称(CN)与URL中的域名进行匹配。如果两者都不相同,则主机名验证将失败。在您的情况下,证书将CN作为本地主机,并且当您尝试使用ip地址调用时,证书将失败。创建证书时,您可以将单个主机名/多个主机名/通配符主机名作为CN值

有关更多详细信息, 请访问 https://tersesystems.com/2014/03/23/fixing-hostname-verification/ https://support.dnsimple.com/articles/what-is-common-name/


Bee*_*Bee 5

CN默认 WSO2 证书的值为localhost. localhost因此,您在发送请求时必须使用主机名。否则,主机名验证失败。

如果您想使用任何其他主机名,您应该使用该主机名生成一个证书,正如Jena 提到的那样。