首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >curl不识别subjectAltName

curl不识别subjectAltName
EN

Stack Overflow用户
提问于 2019-07-23 01:43:01
回答 1查看 2K关注 0票数 0

如何删除关于重复问题的错误横幅?

这个问题不是为什么requestjs拒绝使用Firefox的自签名SSL证书?的翻版。虽然这个问题的答案可能会导致类似的配置文件,但这个问题并不是在subjectAltName中使用subjectAltName。这是一个关键点,因为我们可以很容易找到的所有例子都是使用DNS:,它不适用于IP地址。

这个问题不是在证书名称中使用IP地址的异常的翻版。虽然这个问题的答案可能会导致类似的配置文件,但这个问题完全没有subjectAltName

出于同样的原因,这个问题也不是在服务器证书中使用ip地址作为公共名称在Android中不起作用吗?的重复。

回到实际问题

我想编写一个同时响应localhost127.0.0.1的SSL服务器。不同的网站说,这可以通过subjectAltName实现。因此,我使用以下openssl配置文件创建了一个服务器证书:

代码语言:javascript
运行
复制
distinguished_name = dn
x509_extensions = v3_ca
[req]
prompt = no
[dn]
0.CN = localhost
1.CN = 127.0.0.1
[v3_ca]
subjectAltName = DNS:localhost,DNS:127.0.0.1

服务器正在发送subjectAltName。例如,由s_client验证

代码语言:javascript
运行
复制
% echo | openssl s_client -showcerts -CAfile keys/cert.pem -connect localhost:8443 | grep -i -A 2 certificate
depth=0 CN = localhost, CN = 127.0.0.1
verify return:1
DONE
Certificate chain
 0 s:/CN=localhost/CN=127.0.0.1
   i:/CN=localhost/CN=127.0.0.1
-----BEGIN CERTIFICATE-----
MIIC9jCCAd6gAwIBAgIJANlipKdvxVlUMA0GCSqGSIb3DQEBCwUAMCgxEjAQBgNV
BAMMCWxvY2FsaG9zdDESMBAGA1UEAwwJMTI3LjAuMC4xMB4XDTE5MDcyMzAxMjcw
--
-----END CERTIFICATE-----
---
Server certificate
subject=/CN=localhost/CN=127.0.0.1
issuer=/CN=localhost/CN=127.0.0.1
--
No client certificate CA names sent
Peer signing digest: SHA512
Server Temp Key: X25519, 253 bits

我们还可以使用一个简单的Python客户机来验证它,它报告:

代码语言:javascript
运行
复制
Cipher is ECDHE-RSA-AES256-GCM-SHA384, SSL protocol is TLSv1.2, bits=256
Peer cert is {'subjectAltName': (('DNS', 'localhost'), ('DNS', '127.0.0.1')), 'notBefore': u'Jul 23 01:27:02 2019 GMT', 'serialNumber': u'D962A4A76FC55954', 'notAfter': 'Jul 22 01:27:02 2020 GMT', 'version': 3L, 'subject': ((('commonName', u'localhost'),), (('commonName', u'127.0.0.1'),)), 'issuer': ((('commonName', u'localhost'),), (('commonName', u'127.0.0.1'),))}
Hello from SSL server!

不幸的是,curl只识别名称:

代码语言:javascript
运行
复制
% curl --cacert keys/cert.pem https://localhost:8443
Hello from SSL server!
% curl --cacert keys/cert.pem https://127.0.0.1:8443
curl: (51) SSL: no alternative certificate subject name matches target host name '127.0.0.1'
%

我们如何使curl (和其他程序)注意到subjectAltName、整个subjectAltName,以及除了subjectAltName以外的其他任何东西

更新

也许它适用于这个:

代码语言:javascript
运行
复制
distinguished_name = dn
x509_extensions = v3_ca
[req]
prompt = no
[dn]
CN = IGNORED
[v3_ca]
subjectAltName = DNS:localhost,IP:127.0.0.1

这些东西,好像,有什么记录吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-14 20:37:18

正如James在评论中指出的,

代码语言:javascript
运行
复制
subjectAltName = DNS:localhost,IP:127.0.0.1

语法被记录为这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57155618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档