LAN环境的SSL证书

时间:2010-06-16 07:33:09

标签: c# silverlight-3.0 ssl-certificate self-signed

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

ServicePointManager.ServerCertificateValidationCallback = MyCertHandler; 

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

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

1 个答案:

答案 0 :(得分:1)

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

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

这样的设置

证书链:

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

部署:

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

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

(这是用于设置您自己的CA服务器的随机起始链接。) link text

如果您尝试使用自签名,则最终会使用

证书链:

  • 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