Https 在生成自签名证书时指定使用者替代名称

Https 在生成自签名证书时指定使用者替代名称,https,openssl,ssl-certificate,x509,Https,Openssl,Ssl Certificate,X509,有没有一种方法可以获得设置了主题替代名称的.crt和.key文件?我正在使用此命令生成的openssl.crt和.key配置代理 openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout proxy.key -out proxy.crt 然后,我在.key和.crt上键入.pem,并在客户端使用它。 这个证书可以很好地保护https连接,但是我得到一个警告,证书中没有设置使用者替代名称。在我使用的另一个客户端中,警告

有没有一种方法可以获得设置了主题替代名称的.crt和.key文件?我正在使用此命令生成的openssl.crt和.key配置代理

openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout proxy.key -out proxy.crt
然后,我在.key和.crt上键入.pem,并在客户端使用它。 这个证书可以很好地保护https连接,但是我得到一个警告,证书中没有设置使用者替代名称。在我使用的另一个客户端中,警告实际上是终止连接的错误

这里的解决方案为我提供了一个.csr,我将其重命名为我需要的.crt,当我在客户端使用它时,https连接在错误的ssl证书上失败

有没有一种方法可以获得设置了主题替代名称的.crt和.key文件

可以,但不能从命令行执行此操作。您必须使用CONF文件

有关通过CONF文件设置SAN的信息,请参阅和。两者都包括程序中的SAN。

根据@vog的:


(请注意,这仅适用于OpenSSL>=1.1.1)。

jww的可能副本,不知何故,当我执行您发送给我的第二个链接中的指示时,我看到我现在在.crt中有一个SAN字段,这很好,但当我使用cert密钥作为pem在我的客户端中使用时,我会得到一个
SSL:CERTIFICATE\u VERIFY\u FAILED
。如果我执行相同的openssl证书生成,但改用默认的ubuntu openssl.cnf,我会成功连接,但警告
证书没有“subjectAltName”
。因此,添加SAN会导致验证失败。@HamzehAlsalhi-什么用户代理?这是浏览器吗?或者是命令行工具,如
s_client
wget
cURL
?Python请求是我测试的对象,它会给我一个SAN警告,java HttpsURLConnection是最终目标,但此客户端在没有SAN而不是警告的情况下出错。如果您有一个SAN证书,那么您可能应该问一个新问题。听起来Python信任自签名证书有问题。Stack Overflow喜欢保持问题/答案的针对性和简洁性。你说得对,你解决了我最初问的问题,所以我会接受答案未知选项-addext LibreSSL 2.8。3@PavolTravnik你看了(括号里的)便条了吗?由于openssl版本,它不是debian或mac本机的解决方案-解决方案可能用于特殊设置only@PavolTravnik好吧,如果您阅读链接的答案(来自@vog),您会发现一个在旧版本上工作的命令。这个问题没有加上“Debian”或“macOS”的标签,所以我真的不明白你为什么要否决我的答案。我甚至特别指出,它在旧版本上不起作用,并提供了到我的源代码的链接。请重新考虑。
openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes \
  -keyout example.key -out example.crt -subj "/CN=example.com" \
  -addext "subjectAltName=DNS:example.com,DNS:www.example.net,IP:10.0.0.1"