【问题标题】:Using certificate only on server side仅在服务器端使用证书
【发布时间】:2020-02-16 21:33:30
【问题描述】:

我正在开发一些 WCF 应用程序。我已经有客户端和服务器端。两者都使用 WCF netTcpBinding 或 netNamedPipe 进行通信。我还想要一个仅在服务器端的证书,与 HTTPS 类似。我在这里 click 找到了非常有用的指南。

所以根据这篇文章,我对选项 1 很感兴趣,即

选项一提供(C + I)客户端不会进行身份验证,在这种情况下,将使用 TCP SSL(不是 HTTPS SSL)来提供机密性和完整性,服务将配置如下.

现在一切对我来说都很清楚,不幸的是稍后我们可以阅读:

您还需要在客户端计算机上安装服务证书的根证书颁发机构证书(通常在本地计算机/受信任的根证书颁发机构中),并且服务需要具有以下行为来指定服务的证书.

所以我的问题来了,有什么方法可以避免客户端机器上的更改?如前所述,我正在寻找一种类似于 WEB 的解决方案,其中用户没有义务在他的机器上安装任何类型的证书。

也许我遗漏了一些东西,但也许这条规则仅适用于我使用自信任/开发者证书时?如果我能从威瑞信等值得信赖的公司获得证书怎么办?

【问题讨论】:

    标签: c# wcf ssl ssl-certificate


    【解决方案1】:

    在客户端安装证书只是为了保证服务器端的服务是可信的并且我的通信是安全的。就像访问一个网站一样,我们通常在浏览该网站之前都有该网站的内置证书,所以浏览器会提示该网站是可信的。与自签名证书不同,网站证书是由受信任的第三方机构颁发给特定主机(Web服务器)的,所以我们在客户端需要做的就是在访问网站之前安装权威的受信任的第三方证书。但是当我们在本地 CA 中配置自签名证书时,我们直接在客户端安装服务器证书。
    事实上,Browsers/OS 已经内置了一些权威的第三方证书。比如GlobalSign,VeriSign,所以我们只需要从他们那里购买证书并在服务器端配置它们,在这种情况下,客户端总是信任服务器。 除了安装服务端证书,我们可能还需要在客户端配置服务端身份,通常是证书的公钥,或者主机名。如果我们生成客户端代理并通过添加服务引用来调用服务,这些配置会自动生成。
    如果有什么可以帮助的,请随时告诉我。

    【讨论】:

    • 那么我的客户有什么办法可以接受任何服务器证书吗?我知道我可以在客户端使用自定义证书验证器。让我们想象一下它会为所有证书返回 true,那么我仍然有义务在客户端手动添加这个证书吗?换句话说,我正在寻找解决方案,我的连接将使用证书加密,而无需在客户端执行任何操作(添加到本地 CA 等)。
    • 没有。鉴于您绝对信任服务器证书,以下代码在 .Net 框架项目中验证服务器证书时始终返回 true。 ServicePointManager.ServerCertificateValidationCallback += delegate { return true; };
    【解决方案2】:

    当您使用由 GoDaddy 等受信任的 CA 颁发的证书时,您无需安装任何东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-05
      • 2012-06-07
      • 2021-10-03
      • 2019-05-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多