【发布时间】:2019-10-03 13:59:03
【问题描述】:
我正在使用DTLS v1.0 与服务器通信。我在弄清楚如何生成certificate verify message 时遇到了一些麻烦。我一直在阅读 RFCs(DTLSv1.0 和 TLS1.1,这是 DTLS v1.0 的基础),但在涉及到此特定消息时,它们有些不具体。
我看到消息的结构如下,我知道签名类型是RSA。
struct { Signature signature; } CertificateVerify;签名类型在 7.4.3 中定义。
CertificateVerify.signature.md5_hash MD5(handshake_messages); CertificateVerify.signature.sha_hash SHA(handshake_messages);
根据我读到的内容,它似乎是sha1 哈希和之前发送和接收的所有消息的md5 哈希的串联(直到和不包括这个),然后RSA 签名.
让我有点困惑的是如何组装消息以散列它们。
它是使用每个片段还是使用重新组装的消息?另外,它使用了消息的哪些部分?
TLS 1.1 的 RFC 说
从客户端 hello 开始,直到但不包括此消息, 包括握手消息的类型和长度字段
但是像 message_seq、fragment_offset 和 fragment_length 这样的 DTLS 特定部分呢,我要包括它们吗?
更新:
我已经尝试按照DTLS 1.2 的RFC 显示(意味着保持消息碎片化,使用所有握手字段,包括DTLS 特定字段,不包括初始Client Hello 或Hello Verify Request 消息)但我仍然收到“签名错误”。我确实相信我的签名正确,所以我认为我将数据连接不正确以进行签名。
【问题讨论】:
标签: certificate rsa dtls