2012-10-02 169 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指向您的證書域 –

相關問題