【问题标题】:How can I produce a SKI from RSA public Key in node js?如何从节点 js 中的 RSA 公钥生成 SKI?
【发布时间】:2020-02-28 10:15:02
【问题描述】:

我正在尝试修改 fabric-sdk-node 项目以将其与 RSA 证书和密钥一起使用。

目前我不知道如何使用 RSA 公钥生成 SKI(X509v3 主题密钥标识符)。

该项目在加密事物上使用jsrsasign package

我在 Github.com 上的 jsrsasign 问题页面中找到了 produce SKI with ECDSA,但在 RSA 问题页面中仍然没有任何线索。

欢迎任何建议!

谢谢!

【问题讨论】:

    标签: javascript rsa x509 identifier


    【解决方案1】:

    我几乎测试了包 jsrsasign 中的每个方法,但仍然没有发现任何有用的东西。

    所以我跳出框框思考,X509V3 主题密钥标识符 (SKI) 是由默认的 sha1 哈希算法生成的。然而,我们在 hyperledger/fabric 中所做的定义哈希算法为sha256。那么如果jsrsasign 已经用sha1 硬编码了哈希算法呢? (这是一个猜测,如果我错了,请纠正我。)

    有了这个想法,我尝试了另一个包node-forge,它刚刚解决了我的问题。

    这里是演示:

    const nodeForge = require("node-forge");
    const pki = nodeForge.pki;
    
    const jsrsa = require("jsrsasign");
    const KEYUTIL = jsrsa.KEYUTIL;
    
    
    const rsaPubKeyPem = `-----BEGIN CERTIFICATE-----
    MIID<.........>Y/gRUg==
    -----END CERTIFICATE-----
    `;
    
    const pubKey = KEYUTIL.getKey(rsaPubKeyPem);
    const publicKey = pki.rsa.setPublicKey(pubKey.n,pubKey.e);
    
    console.log(pki.getPublicKeyFingerprint(publicKey,{
        md: nodeForge.sha256.create(),
        encoding: 'hex',
        delimiter: ':'}));
    

    我们得到了与 openssl 完全相同的 SKI。 这将导入另一个加密包,它看起来很丑。 如果您有什么好的想法,请告知。

    谢谢!

    【讨论】:

    • "谢谢。我在今天的 8.0.14 版本中添加了 SubjectKeyIdentifier 扩展支持。" jsrsasign 包新增了制作 SKI 的功能,无需再次导入 node-forge。感谢您的努力!
    猜你喜欢
    • 2017-02-28
    • 2019-08-15
    • 2015-05-16
    • 1970-01-01
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多