【问题标题】:curl:(51) : SSL certificate subject name does not match target host namecurl:(51) : SSL 证书主题名称与目标主机名不匹配
【发布时间】:2017-06-08 20:53:12
【问题描述】:

我遇到了一个问题,即我的 SSL 证书主题名称“与”目标主机名“匹配”,但它会引发错误

     bash-4.1$ curl -X GET --cacert ./server-cert.pem --cert ./client-cert.pem --key ./client-key.pem 'https://PHXC02NX7CBG3QD:9001'
curl: (51) SSL: certificate subject name 'PHXC02NX7CBG3QD' does not match target host name 'PHXC02NX7CBG3QD'

可以看出,两个名称都匹配,但由于未知原因引发了错误。

任何帮助将不胜感激。在此先感谢!

【问题讨论】:

  • 可能是它使用了不寻常的编码或者不应该像 BOM 或软连字符的东西。试试openssl x509 <server-cert.pem -noout -subject -nameopt multiline,show_type
  • @dave_thompson_085 我试过了,但找不到任何额外的字符左右,只能找到简单的名称

标签: ssl curl


【解决方案1】:

只需在 curl 请求中传递 CURLOPT_SSL_VERIFYHOST 等于 FALSE

    $url = 'https://aa.com';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    if (curl_exec($ch) === false) {
        echo 'Curl error: ' . curl_error($ch);
    } else {
        echo 'Operation completed without any errors';
    }
    $content = curl_exec($ch);
    curl_close($ch);

【讨论】:

  • 感谢您的回复。这适用于 curl,就像我禁用了验证标志并能够获得响应一样。但我仍然无法弄清楚名称不匹配的实际原因
猜你喜欢
  • 1970-01-01
  • 2020-11-15
  • 2017-08-20
  • 1970-01-01
  • 2014-01-17
  • 1970-01-01
  • 2020-11-14
  • 2016-12-27
  • 1970-01-01
相关资源
最近更新 更多