3

由于 Android 缺乏对 mDNS 的支持,我在尝试使 2 台设备在 LAN 上通过 HTTPS 进行通信时遇到了问题。

简而言之,我正在开发 Android 应用程序(客户端),它将 HTTPS 请求发送到同一 LAN 上的物联网设备(服务器)。客户端和服务器都应位于具有动态、DHCP 服务 IP 地址的同一网络(IPv4 LAN)上。

问题是,服务器使用自签名证书,其主题设置为其主机名(由 mDNS 广播)。而且由于 Android 不支持 mDNS,我无法找到使用其hostname.local地址访问我的服务器的方法。如果我直接使用服务器的 IP 地址(通过调试服务器获得),我的应用程序显然不会信任连接,因为服务器的证书不引用 IP,而只引用它的主机名。

如果我的应用程序要在支持 mDNS 的设备上运行,我知道我可以使用https://server.local客户端信任服务器的根 CA 并通过继承信任其自己的叶证书的事实。

我已经读过“解决方法”是在我的 Android 应用程序中实现一个 NSD 侦听器来检索我在 LAN 上的服务器的 IP 地址。但这似乎并没有解决我的问题,因为我对解析服务器的主机名并不感兴趣:我只想查询https://server.local以便应用程序可以信任连接(因为服务器的证书仅涵盖主机名)。

4

0 回答 0