2013-08-27 178 views
4

JavaScript或PHP可能嗎?我希望能夠檢測到我的專用CA是否安裝在用戶的iOS或Android設備上。從那裏我可以決定是否提供安裝說明。我一直是「googlin」,並沒有發現任何有用的東西。有沒有人試過這個?我想知道我應該花什麼時間學習。如果這是不可能的,你可以建議一個瀏覽器替代?我們可以檢測是否安裝了根CA證書?

編輯:我在這裏沒有選擇,這不是我的決定。由於其他安全原因,專用CA證書將被使用。

回答

6

我懷疑會有任何種類的設備查詢來測試這個。

我還沒有真正做到這一點,但是您可能想出一個測試,其中JavaScript向使用您要測試的證書的https服務器發出AJAX請求。如果請求成功,則證書正在工作。 (This question似乎暗示,如果SSL證書不驗證,AJAX請求將(正確)失敗)

請注意,因爲URL的方案(http或https)將會不同(可能取決於域如何設置),您的測試網站將不得不使用CORSAccess-Control-Allow-Origin標頭來允許瀏覽器發出請求。見:AJAX calls to untrusted (self-signed) HTTPS fail silently

編輯: 我有一些時間,並舉一個非常簡單的例子。轉到http://ssl_test.gjp.cc。該頁面將嘗試向使用自簽名證書的https://ssl_test2.gjp.cc發出AJAX請求。在您信任ssl_test2之前,您會在ssl_test頁面上看到「失敗」,但是一旦您信任ssl_test2的證書,您應該始終在ssl_test上看到「成功」。

請注意,這並不能證明您的用戶已安裝CA證書 - 所有證明是他們已將瀏覽器配置爲信任測試站點(ssl_test2)。如果您從不直接將用戶指向測試網站,那麼他們將永遠沒有機會僅僅信任該網站,所以這應該工作得很好。

+0

我想補充一點,只是因爲工作的要求並不意味着已安裝證書。用戶可能會好奇並手動接受屏幕消息,詢問他是否信任未知證書。底線:不要使用專用CA證書。 – Sven

+0

@Sven也許你想建議一個替代方案? –

+0

@Sven我的答案描述了使用AJAX請求,移動瀏覽器會在這種情況下提出一條消息來接受證書? –

1

也許this將幫助:

<img src="https://the_site/the_image" onerror="redirectToCertPage()" />