【问题标题】:Developer certificate vs purchased certificate for WCFWCF 的开发人员证书与购买的证书
【发布时间】:2011-01-31 04:18:06
【问题描述】:

我知道如果我想在 WCF 中使用身份验证,那么我需要在我的服务器上安装一个证书,WCF 将使用该证书来加密在我的服务器和客户端之间传递的数据。

出于开发目的,我相信我可以使用 makecert.exe 工具。制作开发证书。

如果我在生产环境中使用此证书,可能发生的最坏情况是什么?

还有……

为什么我不能在生产环境中使用这个证书?

和...

在这种情况下,证书的实际作用是什么?

[编辑:添加另一个问题]

终于……

在网站安装了证书以提供 HTTPS 支持的情况下,相同的证书是否也可以用于 WCF 服务?

关于我的应用程序的注意事项:它是一个 NetTCP 客户端和服务器服务。用户将使用与网站相同的用户名和密码登录,该用户名和密码以明文形式传递。我很乐意将 u/n + p/w 以明文形式传递给 WCF,但框架不允许这样做,并且必须有证书。但是,由于预算限制,我不想购买证书!

(对不起,这个问题可能很愚蠢,但我真的不明白,所以欢迎一些帮助)。

【问题讨论】:

    标签: wcf ssl certificate x509certificate


    【解决方案1】:

    “如果我在生产环境中使用此证书会发生什么最糟糕的情况”安全性将失败,导致整个服务失败。

    “为什么我不能在生产环境中使用这个证书?”
    客户不知道您生成的证书中指定的证书颁发机构,因此无法验证/使用该证书。

    “在这种情况下,证书实际上要做什么?” 客户端使用公钥来加密通信。这将保证只有私钥的所有者(在这种情况下为服务器)才能再次解密(私钥-公钥对是非对称加密)

    希望这会有所帮助,

    【讨论】:

    • 感谢 Marvin,所以世界上只有已知数量的 CA,证书必须由其中一个生成吗?我的 WCF 服务如何知道这种情况?使用 Windows 窗体应用程序的客户端会收到错误或任何错误吗? (只是想了解在这种情况下会发生什么)。
    • CA 的数量不固定。任何人都可以成为 CA(事实上,当您使用 makeCert.exe 时,您就是该证书的 CA)。那么,哪些 CA 是已知的?它们作为“作为 CA”安装到您的证书存储中。例如,这是在您安装“Windows 操作系统”时预先安装的。 CA 也在“链接”,i.o.w. CA#1 可以说,我信任 CA#2,就像我信任自己一样。这允许 CA 分布在世界各地。您可以制作一个 CA 证书。您必须将该证书作为受信任的 CA 安装在所有客户端上,然后您也可以使用您的开发证书。
    【解决方案2】:
    1. 证书需要由所谓的证书颁发机构颁发才能被信任。自签名证书(由 makecert 等创建)不受信任,浏览您网站的每个人都将收到“证书无效”(更具体地说:“证书不受信任,因为它是自签名的”)警告。因此,最坏的情况,人们不会访问您的网站,因为他们不信任它。

    2. 您可以在生产环境中使用自签名证书,但由于上述原因,不建议这样做。

    3. 证书用于在客户端和服务器之间建立安全连接 (HTTPS)。除此之外,它还用于验证服务器的身份。如果您的证书是自签名的,则无法保证您的服务器的身份。

    4. 在 IIS 中,如果您在网站中安装证书,则部署在该网站下的所有 WCF 服务都可以使用该证书。

    简而言之,使用自签名证书进行开发(查看一个名为 SSL Diagnostics 的工具,以便在 IIS 中轻松生成证书),但确实使用生产证书进行生产!

    【讨论】:

      【解决方案3】:

      好吧,如果你在生产环境中使用开发者证书,不会有什么大不了的,毕竟证书就是证书,它提供的加密与任何商业证书都是一样的。

      但是,由于证书不是由受信任的证书颁发机构签署的,因此它不能向客户保证您就是您。让我换一种说法:如果你的服务是一个简单的网页,浏览器会说证书无效。

      在 Web 服务器中提供 SSL 的证书,是告诉客户端该域是受信任且经过验证的域,并且证书颁发机构可以为其担保的证书。

      因此,makecert.exe 制作的证书就像您在一张纸上写下您的名字,然后告诉执法人员说这是您的驾照。

      【讨论】:

      • 我喜欢驾照这个比喻!那么当我申请证书时,CA 会访问我的站点并以某种方式证明我的站点是合法的,然后颁发证书?
      • @实际上不,它不会访问您的站点,但是,它可以保证,因为只有网站的管理员才能安装证书。
      • 知道了。但是,是什么阻止我为 www.abc.com 购买证书然后将其安装在 www.xyz.com 上?我想当浏览器访问该站点时,它会检查正在访问的站点名称是否与证书名称匹配?
      • @RemotecUk SSL 证书仅颁发给单个 DNS 名称。 (或通配符)所以www.abc.com 的证书对www.xyz.com 无效(甚至对abc.com 也无效)
      猜你喜欢
      • 2017-07-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-23
      • 1970-01-01
      • 2021-01-05
      • 1970-01-01
      • 1970-01-01
      • 2011-02-24
      相关资源
      最近更新 更多