Android 上的双向 SSL 通信?

Bidirectional SSL communication on Android?

我想向网络服务器发送请求。它应该能够抵御中间人攻击。因此,我在网络服务器 (https) 上创建了一个 SSL 证书。作为回应,我会得到一个随机字符串。这很好用。

但我如何确保响应免受 MITM 攻击?应如何将响应从网络服务器发送到 Android,我必须在 Android 上配置什么?我必须购买另一个受信任的证书吗?

在典型的所谓 1 向 TLS(a.k.a“服务器证书身份验证”)设置中,服务器基本上会侦听来自任何客户端的请求,但是客户端只会信任具有有效证书的服务器。当客户端认为它可以信任接收到的证书时,可以打开通信通道并且双向加密。

As-called 双向 TLS(a.k.a“客户端证书身份验证”或“相互身份验证”)设置意味着两端都向另一端出示证书结尾。换句话说,您的服务器将只信任某些客户端(出示有效证书的客户端)。这不会影响您对 MITM 的保护。您只会限制受信任的客户群。

因此作为结论 - 如果您唯一关心的是保护您的通信免受 MITM 攻击,单向 TLS 就可以了。

TLS v1.2:https://www.rfc-editor.org/rfc/rfc5246