对不起,我的错误,有两件事必须强调:
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有效性:
4条答案
按热度按时间mfuanj7w1#
在不知道用于生成CSR的数据的情况下,DN的最后一个组件似乎不包含具有目标主机名的CN属性。通常,SSL库客户端将仅检查第一个组件的CN属性是否等于目标主机名。我将颠倒DN顺序并添加一个带有主机名的CN属性。
如果您提供有关如何生成CSR的更多详细信息,我很乐意帮助您解决问题。
nnt7mjpx2#
尝试 CURLOPT_SSL_VERIFYHOST=0 或 curl -k
nzkunb0c3#
来自对等服务器证书的主题详细信息是:
主题:C=CN; ST=北京; L=北京; O=小米
发行人的主题详情为:
C=CN,ST=北京,L=北京,O=OKK,CN=MyComp有效性
显然,这两者是不同的(如果有任何联系的话),因为这是我从问题中理解的。
在任何情况下,如curl错误所示,common-name属性都是缺失的。这可能是因为所提交的证书从未包含它。
建议您尝试从浏览器打开证书并进行验证。
7z5jn7bk4#
我认为Mark很好地回答了这一点,为了在自签名证书中进行本地测试,您应该使用您将查询的主机名作为您的“公共名称”。
我写了一个关于如何设置和查询外包https服务器https://github.com/kidrahahjo/whoami-example的示例
我希望这能帮助