NodeJS 获取 SubjectPublicKeyInfo

编程入门 行业动态 更新时间:2024-10-07 22:20:40

<a href=https://www.elefans.com/category/jswz/34/1771440.html style=NodeJS 获取 SubjectPublicKeyInfo"/>

NodeJS 获取 SubjectPublicKeyInfo

我尝试将此 Go 代码转换为 NodeJS。 Go 代码下载给定主机的 tls 证书,并为主题公钥信息创建哈希。

func Fingerprint(c *x509.Certificate) string {
    digest := sha256.Sum256(c.RawSubjectPublicKeyInfo)
    return base64.StdEncoding.EncodeToString(digest[:])
}

func fromServer(server string) error {
    conn, err := tls.Dial("tcp", server, &tls.Config{
        InsecureSkipVerify: true,
    })

    if err != nil {return err}

    for _, cert := range conn.ConnectionState().PeerCertificates {
        fmt.Println(Fingerprint(cert))
    }

    return nil
}

完整代码

我想出了这个代码

function fingerprint(cert) {
    const digest = crypto.createHash('sha256').update(cert).digest();
    return Buffer.from(digest).toString('base64');
}

function fromServer(server) {
    const socket = tls.connect({ host: server.split(':')[0], port: server.split(':')[1], rejectUnauthorized: false }, () => {
        const cert = socket.getPeerCertificate();
        // console.log(fingerprint(cert.??))
        
        socket.end();
    });
}

我的问题是我找不到用于指纹的值。在 Go 中,我用

RawSubjectPublicKeyInfo
记录了
fmt.Println(hex.EncodeToString(c.RawSubjectPublicKeyInfo))
,该值是 NodeJS
cert.raw.toString('hex')
的一部分,但我没有发现它是“独立的”或转换原始证书的方法。

回答如下:

文档不具体,但

.pubkey
是包含(DER编码)SPKI的
Buffer
,这就是您想要的。至少从 dockerhub 的 node:10-alpine 版本开始; 8以下好像没有。

更多推荐

NodeJS 获取 SubjectPublicKeyInfo

本文发布于:2024-05-30 06:44:47,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1770217.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:NodeJS   SubjectPublicKeyInfo

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!