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

vql8enpb  于 12个月前  发布在  其他
关注(0)|答案(4)|浏览(111)

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

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

我正在尝试使用HTTPS客户端证书的自签名证书。但是,有一个问题“SSL:无法从对等证书获取公用名“
正如你所看到的,服务器端证书包含公共名称,为什么会出现这个问题?
下面是curl输出:

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

以下是
#openssl x509 -in server.crt -text -noout
证书号:数据:版本:1(0x 0)序列号:15298562268347408844(0xd 44 f6953 eb 0aa 1cc)签名算法:sha1 WithRSA加密颁发者:C=CN,ST=北京,L=北京,O=OKK,CN=MyComp有效性:

mfuanj7w

mfuanj7w1#

在不知道用于生成CSR的数据的情况下,DN的最后一个组件似乎不包含具有目标主机名的CN属性。通常,SSL库客户端将仅检查第一个组件的CN属性是否等于目标主机名。我将颠倒DN顺序并添加一个带有主机名的CN属性。
如果您提供有关如何生成CSR的更多详细信息,我很乐意帮助您解决问题。

nnt7mjpx

nnt7mjpx2#

尝试 CURLOPT_SSL_VERIFYHOST=0curl -k

nzkunb0c

nzkunb0c3#

来自对等服务器证书的主题详细信息是:
主题:C=CN; ST=北京; L=北京; O=小米
发行人的主题详情为:
C=CN,ST=北京,L=北京,O=OKK,CN=MyComp有效性
显然,这两者是不同的(如果有任何联系的话),因为这是我从问题中理解的。
在任何情况下,如curl错误所示,common-name属性都是缺失的。这可能是因为所提交的证书从未包含它。
建议您尝试从浏览器打开证书并进行验证。

7z5jn7bk

7z5jn7bk4#

我认为Mark很好地回答了这一点,为了在自签名证书中进行本地测试,您应该使用您将查询的主机名作为您的“公共名称”。
我写了一个关于如何设置和查询外包https服务器https://github.com/kidrahahjo/whoami-example的示例
我希望这能帮助

相关问题