Я создаю клиент Node.js ACMEv2 и пытаюсь опираться только на одну библиотеку криптографии, чтобы сохранить код простым.Родной модуль Node Crypto не поддерживает CSR, поэтому мне пришлось использовать Node-Forge .До сих пор все работает, но я с трудом найти эквивалентный код с помощью Node-Forge:
const crypto = require('crypto');
const signer = crypto.createSign('RSA-SHA256').update(`${requestBase64Url.protected}.${requestBase64Url.payload}`, 'utf8');
const signature = signer.sign(this.keys.accountKey.privatePem, 'base64').replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
console.log(signature);
Выход:
oZpJuZlNgU48t8l-39V1LUZScOPHTFzHDWYT6ttf1KBGnm6jNuGkogwc0QiANrt5h5z6mp0Wz3rPz7etxjby_znQsGuaGdxvtVDf30_6j0mN-Rh7OXkS489JK6kDSQRbhpoyulb75QZyhDoA2pbmqyPc6HnfnQ2gUGr8HZf3K_LnfXCAX807MAzXd_bOx2dE0NbnwoVQQgGG1u5s7Q9-DY1WNjolYmkTt_skNoXgbAKZwj-8x6oSbfGk5_7-mbuEXcxUAJuXmGQsHrHAp7lKBZ9ZhTyZUlZjEhfRYb7cMYHSAJccalMPC5y5uzrIQYILhGtuDcXBsY1rCanJw6eRqg
можно также достичь такой же вывод, используя следующую OpenSSL (и кодирование результатов в base64url):
openssl dgst -sha256 -sign account.key -out signature.sha256 signature.b64
* * 1014 Как можно получить тот же результат, используямодуль
Node-Forge ?Я попытался следующие без удачи:
let messageDigest = forge.md.sha256.create();
messageDigest.update(`${requestBase64Url.protected}.${requestBase64Url.payload}`, 'utf8');
const accountKey = await forge.pki.privateKeyFromPem(this.keys.accountKey.privatePem);
request.signature = accountKey.sign(messageDigest);
Выход:
wqHCmknCucKZTcKBTjzCt8OJfsOfw5V1LUZScMOjw4dMXMOHDWYTw6rDm1_DlMKgRsKebsKjNsOhwqTCogwcw5EIwoA2wrt5wofCnMO6wprCnRbDj3rDj8OPwrfCrcOGNsOyw785w5DCsGvCmhnDnG_CtVDDn8OfT8O6wo9Jwo3DuRh7OXkSw6PDj0krwqkDSQRbwobCmjLCulbDu8OlBnLChDoAw5rClsOmwqsjw5zDqHnDn8KdDcKgUGrDvB3Cl8O3K8Oyw6d9cMKAX8ONOzAMw5d3w7bDjsOHZ0TDkMOWw6fDgsKFUEIBwobDlsOubMOtD34Nwo1WNjolYmkTwrfDuyQ2woXDoGwCwpnDgj_CvMOHwqoSbcOxwqTDp8O-w77CmcK7woRdw4xUAMKbwpfCmGQsHsKxw4DCp8K5SgXCn1nChTzCmVJWYxIXw5Fhwr7DnDHCgcOSAMKXHGpTDwvCnMK5wrs6w4hBwoILwoRrbg3DhcOBwrHCjWsJwqnDicODwqfCkcKq
1024 *