#node.js #ssl #node-forge
#node.js #ssl #узел-forge
Вопрос:
Я использую node-forge для создания и проверки сертификатов
Я создаю и проверяю сертификаты, и, кажется, все работает отлично, но когда дело доходит до той части, где мне нужно предоставить подпись для сертификата, это не удается
Чтобы уточнить: мне нужно предоставить подпись для сертификата, где подпись хэшируется с использованием RSA, а подпись содержит данные о клиенте и его ролях
способ, которым я создаю подпись
const createSignture = (privateKey, data) => {
// The signature method takes the data we want to sign, the
// hashing algorithm, and the padding scheme, and generates
// a signature in the form of bytes
const signature = crypto.sign("sha256", Buffer.from(data), {
key: privateKey,
padding: crypto.constants.RSA_PKCS1_PSS_PADDING,
});
return signature.toString("base64");
};
Когда я создаю сертификат с помощью forge, я делаю это так:
const cert = forge.pki.createCertificate();
....
cert.signature = createSignture(privateKey, userUniqueId);
...
И когда я проверяю сертификат, я пытаюсь проверить подпись
const verifySignture = (publicKey, signture, data) => {
// To verify the data, we provide the same hashing algorithm and
// padding scheme we provided to generate the signature, along
// with the signature itself, the data that we want to
// verify against the signature, and the public key
return crypto.verify(
"sha256",
Buffer.from(data),
{
key: publicKey,
padding: crypto.constants.RSA_PKCS1_PSS_PADDING,
},
signture
);
};
const certSignture = cert.signature;
const decodedSignature = Buffer.from(forge.util.binary.raw.decode(certSignture)).toString("base64");
verifySignture(publicKey, decodedSignature, userUniqueId) // This always returns false
Я не очень уверен, что я должен указывать роли, идентификатор пользователя и т. Д. В подписи.
Я пробовал много часов, и ничего не работает, поэтому я был бы очень признателен за любую помощь