如何使用Netsuite中的key.pem文件用Suitescript签署HTTP请求



我正在尝试签署https请求,为此我需要加密摘要。从api中,我生成了certificate.pem和privateKey.pem。我将它们都上传到了公司设置的CertificateandKey部分的Netsuite中。

我的问题主要是如何从文件中获取privateKey以用于加密模块?

这是我迄今为止所拥有的。"payload"是我要为摘要加密的数据,它只是一个字符串。

var sKey = keyControl.loadKey('custkey2');
var hmacObj = crypto.createHmac({
algorithm: crypto.HashAlg.SHA256,
key: sKey
});
var updatedHmac = hmacObj.update({
input: payload,
inputEncoding:encode.Encoding.UTF_8
});
var reencoded = encode.convert({
string: updatedHmac,
inputEncoding: encode.Encoding.UTF_8,
outputEncoding: encode.Encoding.BASE_64
});

但当我在我的Suitelet中运行它时,我会从"创建Hmac"中得到一个错误。任何帮助都将不胜感激,谢谢。

SS2.0模块N/https/clientCertificate持有答案。不使用https.post(),而是使用clientCertificate.post(),后者可以使用数字证书发送SSL请求。

适用于我的示例:

/* 1st create certificate in NetSuite UI (Setup > Pereferences > Certificates) */
const certId = 'custcertificate_xy';
/* 2nd use certificates id inside request call */
const response = clientCertificate.post({
url: url,
body: body,
certId: certId,
headers: headers
});

请注意,出于某种原因,NetSuite希望我拥有以下格式的证书(*.pem(文件:

-----BEGIN PRIVATE KEY-----
{{private key}}
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
{{certificate}}
-----END CERTIFICATE-----

最新更新