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

来源:15-14 mediasoup数据流转2

GavinXu89

2021-09-28

文件: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回答

李超

2021-09-28

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

0
3
GavinXu89
非常感谢!
2021-10-13
共3条回复

慕少1529879

2022-02-20

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

0
1
GavinXu89
binding request 里面的fingerprint和sdp里的fingerprint不是同一个东西,肯定不一致。 binding request 里面的fingerprint使用crc32算法检测STUN请求消息是否有错; sdp里的fingerprint是证书的散列值,也就是摘要。 在RFC5389中,已将属性PASSWORD删除。
2022-05-13
共1条回复

百万级高并发WebRTC流媒体服务器设计与开发

备战5G音视频时代,抢先掌握服务端高级技能

2067 学习 · 375 问题

查看课程