我正在使用Java applet成功下载并启动C#应用程序。 某些情况下的C#应用程序尝试安装X509证书。
这应该从系统触发“您即将安装证书......”的提示,其中“是”或“否”按钮(焦点设置为否)。
从applet启动时,我没有看到弹出窗口。似乎有人用“否”解雇了它。 实际上,即使是“Hello world”消息框也不会显示。
如果我只是双击某个应用程序,它就可以正常工作。
非常感谢任何帮助。谢谢。
答案 0 :(得分:0)
您可能尝试从C#可执行文件请求完全信任,但我认为不可能从Java applet调用它。
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/