【问题标题】:SslStream.AuthenticateAsServer certificate chainSslStream.AuthenticateAsServer 证书链
【发布时间】:2017-03-09 14:03:13
【问题描述】:

是否可以通过证书链连接到客户端作为服务器?

clientStream.AuthenticateAsServerAsync(certificate, false, System.Security.Authentication.SslProtocols.Tls, false).Wait();

我只是尝试使用自签名证书链连接到客户端,但运气不佳。 SslStream 实例 AuthenticateAsServer 的方法只有一个证书作为参数。但是浏览器要求additional root certificate。 你有什么想法或代码示例是怎么做的吗?

【问题讨论】:

    标签: c# .net ssl x509certificate


    【解决方案1】:

    链不发送根,因为 A)你已经拥有它,所以它对你的根存储是多余的;或 B) 你不相信,在这种情况下你不会信任它,那何必呢?

    RFC 5246, section 7.4.2:

    证书列表: 这是证书的序列(链)。发件人的 证书必须排在列表的首位。以下每一个 证书必须直接证明它之前的证书。因为 证书验证要求分发根密钥 独立地,指定根的自签名证书 证书颁发机构可以从链中省略,在 假设远端必须已经拥有它才能 无论如何都要验证它。

    SslStream 类将发送服务器身份证书,后跟它知道的任何中间体,但不发送根(当然,除非服务器身份证书是自签名的)。

    通常情况下,不受信任的根可以通过他们写入其子/中间 CA 的授权信息访问记录来查找。如果您没有 AIA 或无法访问端点,则必须通过不同的机制将根传输到客户端计算机。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-11
      • 1970-01-01
      • 2021-11-26
      • 2021-05-12
      • 1970-01-01
      • 1970-01-01
      • 2017-08-15
      • 2011-10-31
      相关资源
      最近更新 更多