2013-08-30 74 views
0

我正在使用Java applet成功下載並啓動C#應用程序。 某些情況下的C#應用​​程序嘗試安裝X509證書。Java applet下載和啓動exe; exe無法顯示彈出

這應該會觸發系統提示「您即將安裝證書...」,並顯示「Yes」或「No」按鈕(焦點在No上設置)。

從applet啓動時,我看不到這個彈出窗口。似乎有人用「不」來解僱它。 事實上,即使是「Hello world」消息框也不顯示。

它工作正常,如果我只是雙擊一個應用程序。

任何幫助將不勝感激。謝謝。

+0

我會想象這一切會在瀏覽器上的安全設置,極大地依賴。運行操作系統本機可執行代碼是一個棘手的情況。 – Cruncher

+0

跨所有瀏覽器的行爲相同。 – user2533495

+0

applet是否由您進行數字簽名,並由最終用戶信任? –

回答

0

您可能試圖從C#可執行文件請求完全信任,但我不認爲可以從Java小程序調用它。

Granting FullTrust to an assembly

相反,你可以驗證,當你建立,而無需使用C#或Java安裝它連接的證書。您必須將服務器證書的散列值與從應用程序設置或硬編碼常量中檢索的值進行比較。

在C#中,您可以使用此代碼添加具有驗證代碼的回調對象以註冊回調。

ServicePointManager.ServerCertificateValidationCallback += 
    OnServerCertificateValidationCallback; 

並將此代碼作爲回調方法。

private static bool OnServerCertificateValidationCallback(object sender, 
    X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) 
{ 
    return certificate.GetCertHashString() 
     .Equals(certificateHash, StringComparison.InvariantCultureIgnoreCase); 
} 

在Java中,我不能透露我使用的代碼,但它是由EasySSLSocketFactory在這個庫中找到EasyX509TrustManager類的啓發。這是Android代碼,但我不認爲這取決於任何Android特定功能。

http://code.google.com/p/exchangeit/source/browse/trunk/src/com/byarger/exchangeit/

+0

感謝凱文,我必須安裝證書。這將用於非Http通信。此外,我的C#應用​​程序由開發人員許可證簽署。我想我會試用CasPol.exe,看看能否贏得信任! – user2533495

+0

沒有工作。沒有任何種類的彈出窗口正在顯示。 – user2533495

+0

通過使用Bouncy Castle而不是使用.pfx文件生成證書來解決我的特殊問題。因此避免提示... – user2533495