使用IP的有效Android证书

时间:2014-07-08 12:18:34

标签: java android ssl https x509certificate

在我的工作中,我们使用内部CA运行私有PKI来签署我​​们的服务器证书。在开发通过https与REST API通信的Android应用程序时,我使用192.168.x.x IP设置了开发服务器并为其颁发了证书。所以我有:

  • CN为“自定义CA”的CA证书
  • 服务器证书CN 192.168.0.3

然后我关注Android docs on setting up a TrustStore并让应用在Android 4.0.4设备上通过https进行通信。 当我在运行Android 4.4(KitKat)的设备中测试应用程序时,无法验证服务器。

任何想法为什么?

1 个答案:

答案 0 :(得分:2)

因此,在RFC2818RFC6125上挖掘了一下之后,我发现APIv14 (4.0.4)中的DefaultHostnameVerifier实现会检查主机是否符合CN部分,如果它不匹配,它将查找SAN条目 DNS 类型但不是IP类型。 APIv19 (4.4.4)将针对SAN IP条目检查IP主机。

因此,我将IP SAN条目192.168.0.3添加到服务器证书并对CA进行了签名,并使4.4设备通过HTTPS进行通信。