Я почти протестировал каждый метод в пакете jsrsasign
, но все еще не нашел ничего полезного.
Поэтому я смотрю за пределы поля и думаю, что идентификатор ключа субъекта (SKI) X509V3 был создан по умолчанию sha1
га sh ал go. Однако то, что мы сделали в hyperledger / fabri c, определило, что ha sh al go будет sha256
. Так что, если jsrsasign
сделал это sh al go жестко закодированным с 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: ':'}));
И у нас есть точно такой же SKI, как у openssl. Это импортирует другой криптопакет, и это выглядело ужасно. Пожалуйста, сообщите, если у вас есть хорошие идеи.
Спасибо!