我正在编写一个分布式应用程序,它将出售给多个客户并在本地托管。此应用程序以分布式系统的形式运行,其中许多相同的应用程序通过 HTTPS 作为 RESTful 服务相互通信。
我知道我无法控制这些应用程序使用的 IP 地址或域名,但我仍然需要应用程序附带的默认 TLS 证书(可覆盖以满足安全合规性)。
我可以CN
在 openssl 中为我的字段指定一个通配符名称,*
但是当一个节点尝试访问另一个节点时,证书与其托管的 IP 地址不匹配。
Python 请求库给出错误:WARNING:urllib3.connection:Certificate did not match expected hostname: 192.168.1.150.
- 我并不是在询问上述错误,这只是为了描述我的问题。
例子
主人A:192.168.1.150:5000
主机B:192.168.1.151:5000
证书 CN:*
HostB -> HostA
不起作用,因为证书没有指定192.168.1.150
地址。
有没有合适的方法来处理这个问题?我知道有些路由器附带默认证书,但它们可以控制其主机地址。
答案1
您当然可以发送默认的 TLS 证书。但您无法做到的是让它不发出安全警告。如果这对最终用户来说是一个问题,则由最终用户来替换证书,而产品开发人员则应尽可能让其变得方便。