【问题标题】:How do peers involved in a p2p communication authenticate each other?参与 p2p 通信的对等方如何相互验证?
【发布时间】:2021-02-14 19:20:38
【问题描述】:

WebRTC 中的对等点如何相互验证?

【问题讨论】:

  • 这个问题对我来说太不清楚也太宽泛了。在标题中,您通常会询问 DTLS,它是一种不仅用于 WebRTC 的协议。在问题正文中,您更专注于 WebRTC,但不是排他性的。请注意,这些细节是相关的,因为 DTLS 可以处理类似于 TLS 的各种身份验证。并且 TLS 也不需要 CA,但可以处理自签名证书,甚至完全省略证书以支持 PSK 或其他身份验证方法。

标签: ssl webrtc tls1.2 dtls openwebrtc


【解决方案1】:

WebRTC 中的 DTLS 使用自签名证书。 RFC 5763 有详细信息,简而言之,证书指纹与 SDP 的 a=fingerprint 行中提供的指纹匹配。

【讨论】:

  • RFC 只是关于 DTLS 的单一特定用途。最新的 DTLS 规范本身是 RFC 6347,它显然没有说明强制自签名证书。像 TLS 一样,它可以使用“任何”证书。
  • @PatrickMevzek:是的,也不是。问题标题一般是关于 DTLS,但正文特别提到了 WebRTC。在这个狭窄的背景下,这里的答案是正确的。
【解决方案2】:

正如 Patrick Mevzek 已经提到的评论:

如果自签名证书是受信任/接受的,它不依赖于 DTLS 或 TLS。

这仅取决于对等方的受信任证书。如果客户端或服务器的 证书路径/链包含一个证书,该签名可以由受信任的证书验证,然后假定它是受信任的。可能有一些额外的检查作为有效时间或密钥使用或主机名。受信任的证书通常存储在“信任库”中。 因此,如果您的服务器应该使用这样的自签名证书,请将该自签名证书添加到客户端的信任库中。如果客户端随后仅收到该自签名证书作为路径,它会检查签名者(在这种情况下是证书本身)是否在信任库中。

使用此类自签名证书的原因在于,尚未将该证书添加到其信任存储区的其他客户端将信任该服务器。

像 Webrtc 这样的 p2p 系统中的对等点如何相互验证?

如果这些对等方提前将对方的证书添加到他们的信任库中,那么他们将相互信任。

他们需要来自 CA 的证书吗?

如果您无法提前添加对方的证书,那么您需要由 CA(证书)签名的证书,该证书已在对等方的信任库中。

【讨论】:

  • 根据我在 WebRTC p2p 场景中的理解,证书未添加到信任库中。相反,对等(自签名)证书的指纹在 SDP 中公布,因此可用于特定调用上下文中的证书验证。
  • “like Webrtc”让我相信,这是一个关于 DTLS 的 x509 与 TLS 不同的普遍问题。在我看来,没有区别,x509需要信任。但可以肯定的是,只有问过的人才知道被问到了什么:-)。
  • 我完全同意这个问题太不具体了。尽管如此,在 WebRTC 的情况下,证书并未添加到信任库中,这与您在问题中描述的相反。只需将证书指纹与 SDP 中指定的指纹进行比较即可检查信任。
  • 是的,如果您专注于“信任库”。如果你专注于“提前建立信任”,要么通过一个完整的证书来信任,要么就是这样一个可信证书的指纹,那么差别并没有那么大。我在回答中的观点更多的是,您需要信任,无论是通过普通 CA 还是通过提前交换受信任的证书,甚至可能只是指纹。
  • 我不太明白你关于我应该关注什么和不应该关注什么的论点。我试图在您的答案中指出一个事实错误(关于身份验证在 WebRTC 中的工作方式),希望它得到修复。如果您编辑问题以解决这部分问题,而不是争辩说不应该关注这一点,而是关注答案的另一部分,这不是更好吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-20
  • 2019-03-16
  • 1970-01-01
  • 1970-01-01
  • 2012-03-22
相关资源
最近更新 更多