0

我正在使用 Java 小程序成功下载并启动 C# 应用程序。C# 应用程序在某些情况下会尝试安装 X509 证书。

这应该会触发系统提示“您即将安装证书...”,并带有“是”或“否”按钮(焦点设置在“否”上)。

从小程序启动时,我看不到此弹出窗口。似乎有人用“不”驳回了它。事实上,即使是“Hello world”消息框也不会出现。

如果我只是双击一个应用程序,它就可以正常工作。

任何帮助将不胜感激。谢谢你。

4

1 回答 1

0

您可能会尝试从 C# 可执行文件请求完全信任,但我认为不可能从 Java 小程序调用它。

将 FullTrust 授予程序集

相反,您可以在建立连接时验证证书,而无需使用 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 中,我无法透露我使用的代码,但它的灵感来自此存储库中的EasySSLSocketFactoryEasyX509TrustManager类。它是 Android 代码,但我认为它不依赖于任何 Android 特定功能。

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

于 2013-08-30T21:10:17.380 回答