请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

可能讲错:HasFingerprint判断是否有证书的指纹

文件:mediasoup-dem/server/node_modules/mediasoup/worker/src/RTC/IceServer.cpp
函数:IceServer::ProcessStunPacket
讲错内容:
图片描述
正确描述:STUN协议中,FINGERPRINT是STUN消息的指纹,不是证书的指纹。
理由1:函数StunPacket::Parse中,判断有FINGERPRINT属性的情况下,计算STUN消息的指纹:
图片描述
理由2:RFC 5389 36页
图片描述

检查远端证书指纹合法性的函数位于CheckRemoteFingerprint:

inline bool DtlsTransport::CheckRemoteFingerprint()
{
	certificate = SSL_get_peer_certificate(this->ssl);
	...
	// Compare the remote fingerprint with the value given via signaling.
	ret = X509_digest(certificate, hashFunction, binaryFingerprint, &size);
	...
	if (this->remoteFingerprint.value != hexFingerprint)
	{
		...
		return false;
	}
}

正在回答

2回答

那这个指纹是干啥用的呢?你再好好了解一下

0 回复 有任何疑惑可以回复我~
  • 提问者 GavinXu89 #1
    如上理由1 、2描述,这个指纹使用CRC32算法来校验STUN消息的正确性。
    回复 有任何疑惑可以回复我~ 2021-09-29 21:23:17
  • 李超 #2
    你说对了,我刚确认了一下,这个指纹与SDP中的指纹和证书指纹不是同一个
    回复 有任何疑惑可以回复我~ 2021-10-11 17:08:49
  • 提问者 GavinXu89 #3
    非常感谢!
    回复 有任何疑惑可以回复我~ 2021-10-13 11:32:12
慕少1529879 2022-02-20 11:09:44

通过抓包,我发现binding request 里面的fingerprint 显示的是crc32 类型,但也不确定是否跟sdp里的fingerprint 一致,并且看不到binding request 有password字段

0 回复 有任何疑惑可以回复我~
  • 提问者 GavinXu89 #1
    binding request 里面的fingerprint和sdp里的fingerprint不是同一个东西,肯定不一致。
    binding request 里面的fingerprint使用crc32算法检测STUN请求消息是否有错;
    sdp里的fingerprint是证书的散列值,也就是摘要。
    在RFC5389中,已将属性PASSWORD删除。
    回复 有任何疑惑可以回复我~ 2022-05-13 13:16:39
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信