2012-10-02 88 views
2

我有一个移动应用程序,它访问https://myserver.com/mywebservice处的Web服务。在我的应用程序中使用自签名证书

如果我创建一个自签名证书并将其放在我的服务器上,当移动应用程序访问Web服务时,它会看到证书,但它不会识别它,因为它是自签名的。但在这种情况下,如果我有一个“中间人”攻击,攻击者可以创建自己的证书,这样应用程序就会看到证书,并且它再次无法识别证书。

问题:当你使用像goDaddy那样的证书时,iOS或Android编程为信任goDaddy证书才能工作,那么攻击者使用的假证书被认为是无效的?所以如果我让应用程序信任我的证书,我可以用同样的方式使用我的自签名证书?

另请问我如何知道iOS或Android信任哪些证书?

回答

1

通常您的应用程序或操作系统需要信任颁发服务器证书的CA才能正常工作。如果它是由预先安装了证书的CA颁发的,那么事情就会起作用。如果没有,您需要将CA安装到操作系统信任库中,或者修改您的应用程序以信任它。创建证书的人无关紧要,VeriSign或goDaddy证书不像您的自签名证书更“特殊”。

至于获取可信任证书列表,Android 4.x及更高版本列出了Settings-> Security-> Trusted Credentials中的信息。对于早期版本,你必须编写一些代码来枚举它们。不了解iOS。

+0

我同意,但我想补充一点:通常(但不是总是)人们在开发阶段使用自签名证书,在这个阶段你的服务器运行在持有你的模拟器的同一台机器上,在这种情况下,您需要更改模拟器中的主机文件以将10.0.2.2指向您的证书域 –

相关问题