SSL:无法从对等证书获取通用名称

Fre*_*ang 3 ssl https curl

对不起,我的错误,有两件事必须强调:

The CA cert Common Name must not same to the server/client side cert
The server/client side cert's common name must be same
Run Code Online (Sandbox Code Playgroud)

我正在尝试将自签名证书用于 HTTPS 客户端证书。但是,存在“SSL:无法从对等证书获取通用名称”的问题

如您所见,服务器端证书包含Common Name,为什么会出现此问题?

这是卷曲输出:

  • 即将 connect() 到 127.0.0.1 端口 443 (#0)
  • 正在尝试 127.0.0.1... connected 输入 PEM 密码:
  • 成功设置证书验证位置:
  • CAfile:/home/freeman/dev/git/ca_tools/ca_tools/ssl/CA/secure_ca.crt CApath:/etc/ssl/certs
  • SSLv3、TLS 握手、客户端问候 (1):
  • SSLv3、TLS 握手、服务器问候(2):
  • SSLv3、TLS 握手、CERT (11):
  • SSLv3、TLS 握手、服务器密钥交换 (12):
  • SSLv3、TLS 握手、请求 CERT (13):
  • SSLv3、TLS 握手、服务器完成(14):
  • SSLv3、TLS 握手、CERT (11):
  • SSLv3、TLS 握手、客户端密钥交换 (16):
  • SSLv3、TLS 握手、CERT 验证 (15):
  • SSLv3、TLS 更改密码、客户端问候 (1):
  • SSLv3,TLS 握手,完成 (20):
  • SSLv3、TLS 更改密码、客户端问候 (1):
  • SSLv3,TLS 握手,完成 (20):
  • 使用 ECDHE-RSA-AES256-SHA 的 SSL 连接
  • 服务器证书:
  • 主题:C=CN;ST=北京;L=北京;O=小米
  • 开始日期:2014-05-14 12:50:20 GMT
  • 到期日期:2024-05-11 12:50:20 GMT
  • SSL:无法从对等证书获取通用名称
  • 关闭连接#0
  • SSLv3、TLS 警报、客户端问候 (1):

这是
#openssl x509 -in server.crt -text -noout

证书:数据:版本:1 (0x0) 序列号:15298562268347408844 (0xd44f6953eb0aa1cc) 签名算法:sha1WithRSAEncryption 发行人:C=CN, ST=Beijing, L=Beijing, O=,Valid=MyTest, OU=

Mar*_*ark 6

在不知道用于生成 CSR 的数据的情况下,您的 DN 的最后一个组件似乎不包含具有目标主机名的 CN 属性。通常,SSL 库客户端只会检查第一个组件的 CN 属性是否等于目标主机名。我将反转 DN 顺序并添加带有主机名的 CN 属性。

如果您提供有关如何生成 CSR 的更多详细信息,我将很乐意帮助您找出解决方法。


Lit*_*ode 5

尝试CURLOPT_SSL_VERIFYHOST=0curl -k

  • 禁用 SSL 认证验证通常是一个坏主意和一个糟糕的黑客。如果目的是针对 MITMA 提供任何保证,则禁用验证会导致保证失败。 (5认同)