如何别名一个SSL证书的通用名称?

我有一个服务器,它有一个自我签名的证书,我试图安全地访问。 我通过查看openssl s_client -connect <ip>的输出获得了证书,并将其复制到testcert.pem,然后我试着使用curl --cacert testcert.pem <url> 。 然而,这并没有工作,我的研究已经导致我相信,问题可能是证书中的行,读取Subject: CN=id23946

显然,我需要存储一个别名在我的系统链接id23946到IP地址,但我找不到任何信息如何做到这一点。 那么,我该怎么做呢? 如何使curlvalidation此证书有效?

编辑:我知道,我可以连接到服务器通过添加<ip> id23946到我的主机文件,然后使用id23946作为地址,但我真的希望能够直接连接到服务器的实际地址,而不必修改服务器证书。 有没有办法做到这一点?

不幸的是,没有办法做到你想要的,除了获得一个新的证书,其中包含其他DNS名称/ IP地址,您的TLS客户端将与该服务器联系的主题备用名称(SAN)扩展。

原因是这个“别名”需要X509validation过程的信任 ,并且唯一可信的绑定信息 – 包括像“this subject / cert”之类的别名也与DNS名称site.example.com相关联和IP地址1.2.3.4“ – 是将这些别名/关联包含在证书本身中 。 validation过程信任签名证书,因此签发证书的签名需要涵盖有关该主题的所有内容,包括别名。 发行证书声明为有效的所有内容都包含在证书本身中。

另一种思考的方法是“如果没有签发证书,则不能被信任”。