我试图使用Openssl的API来解析证书上的签名算法。目前,我正在使用X509_到达_签名_信息函数获取散列/摘要nid和pkey nid。然而,这些nid似乎是Openssl独有的,而我正在寻找上述签名算法的IANA值。(签名算法的IANA值)例如,我正在寻找一个Openssl,它将哈希算法md5的nid (根据这个文件为4)转换为此哈希算法的iana值,即1。如果这个api不存在,我会感到惊讶,因为Openssl必须将它们的nid转换为iana值,才能将该哈希算法通过有线发送。
发布于 2020-10-31 05:10:52
是的,NID仅限于OpenSSL。
TLS 'SignatureAndHashAlgorithm‘的散列和签名部分的单独编码和注册仅适用于TLS1.2。您所链接的IANA页面部分,以及接下来的一段,将这句话说得有点模糊:“在1.3之前”。然而,sigalgs在1.2之前并不存在,因此唯一在1.3之前而不是在1.2之前的协议是1.2。TLS1.3将“SignatureScheme”的定义更改为单个2字节值,在1.2中定义的大多数对(并非全部)保留下来,但添加的新值不符合“散列字节、签名字节”格式。EdDSA由RFC8422用' hash '=8定义为TLS1.2,表示没有单独的散列,在TLS1.3中也使用相同的第一个字节8,用于RSASSA,它将数据作为一个可分离的步骤进行散列,但也在MGF1中使用哈希,因此可以说它不是完全“单独的”。
OpenSSL不需要将任何证书签名“转换”到TLS线类型(S),也不需要。相反,对于协议1.2和1.3,它决定是否使用证书,方法是将每个配置的/提供的/共享的sigalg的NID(有时甚至更多压缩的cert数组索引)与潜在的证书(S)进行比较。它确实允许提供和接受配置sigalgs,而SSL_[CTX_]set1_[client_]sigalgs确实接受一对NID。但是,这些数据只用于协议;AFAICS没有支持的方法将其取出。
ObSec: MD5坏了,不要在证书中使用它。或者其他任何事情。
https://security.stackexchange.com/questions/240268
复制相似问题