1

我制作了一个 Silverlight 3.0 应用程序,它通过 https 与 xml rpc 服务器通信。整个应用程序将在 LAN 环境中运行,服务器可以安装在不同的机器上,客户端可以安装在同一台机器上。我正在使用针对服务器 ip 生成的自签名证书,我需要输入受信任的根证书颁发机构在客户端机器上。但是如果我想与第二台服务器通信,则需要在客户端计算机上针对该特定服务器的 ip 安装另一个证书,简而言之,如果我想与 n 个不同的服务器通信,我需要在客户端上安装 n 个证书,这对我来说是不可能的,我怎样才能通过局域网环境使用单个证书来做到这一点。证书是根据服务器的 ip 或主机名生成的,有没有办法绕过 SSL 证书的验证?喜欢

ServicePointManager.ServerCertificateValidationCallback = MyCertHandler; 

static bool MyCertHandler(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors error) 
{ 
// Ignore errors 
return true; 
} 

但是上面的代码不能在 Silverlight 中使用?有什么帮助吗?

4

1 回答 1

1

不要使用自签名证书,如果可以忽略身份验证,那么没有充分的理由使用 ssl。

为了避免自签名证书:设置个人 CA(使用 Microsoft 的 CA 非常容易)。然后从您自己的 CA 颁发服务器证书,并将 CA 的证书作为受信任的根提供给每个服务器。然后你最终得到一个像这样的设置:

证书链:

  • A 签名 B
  • A 签名 C
  • A 签名 D
  • 一个签名的 E

部署:

  • 服务器 B 得到 A 和 B
  • 服务器 C 得到 A 和 C
  • 服务器 D 得到 A 和 D
  • 服务器 E 得到 A 和 E

然后,连接到这些服务器中的任何一个的客户端可以将通用名称与其连接的地址匹配,将有效日期范围与其自己的现在时间匹配,并为每个服务器构建一个验证链以验证“CA Cert A”。

(这里是设置您自己的 CA 服务器的随机起始链接。) 链接文本

如果您尝试使用 Selfsigned,您最终会得到

证书链:

  • B 签署 B
  • C 签名 C
  • D 签名 D
  • E 签名 E

证书部署

  • 服务器 B 得到 B、C、D、E
  • 服务器 C 获取 B、C、D、E
  • 服务器 D 得到 B、C、D、E
  • 服务器 E 得到 B、C、D、E
于 2010-07-10T07:27:45.843 回答