2013-08-30 39 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