gpt4 book ai didi

ssl - curl 无法识别 subjectAltName

转载 作者:太空宇宙 更新时间:2023-11-03 14:26:02 24 4
gpt4 key购买 nike

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

这个问题不是 Why does requestjs reject a self-signed SSL certificate that works with Firefox? 的重复问题.虽然该问题的答案可能会产生类似的配置文件,但该问题并未在 subjectAltName 中使用 DNS:。这是一个关键点,因为我们可以通过 Google 轻松找到的所有示例都使用 DNS:,它不适用于 IP 地址。

这个问题不是 Exception on using IP address in certificate name 的重复问题.虽然该问题的答案可能会生成类似的配置文件,但该问题完全缺少 subjectAltName

这个问题也不是 Using ip address for common name in server certificate does not work in Android? 的重复问题出于同样的原因。

回到实际问题

我想编写一个响应 localhost127.0.0.1 的 SSL 服务器。各种网站都说这可以使用 subjectAltName 来实现。所以我使用以下 openssl 配置文件创建了一个服务器证书:

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 验证:

% 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 客户端来验证它,它会报告:

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 只能识别名字:

% 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?

更新

也许它适用于此:

distinguished_name = dn
x509_extensions = v3_ca
[req]
prompt = no
[dn]
CN = IGNORED
[v3_ca]
subjectAltName = DNS:localhost,IP:127.0.0.1

这些东西是否记录在任何地方?

最佳答案

正如 James Polk 在评论中指出的,

subjectAltName = DNS:localhost,IP:127.0.0.1

语法已记录 here .

关于ssl - curl 无法识别 subjectAltName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57155618/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com