如何使用 Netsuite 中的 key.pem 文件通过 Suitescript 签署 HTTP 请求?
How can I use a key.pem file in Netsuite to sign a HTTP request with Suitescript?
我正在尝试签署 https 请求,为此我需要加密摘要。从 api 我生成了 certificate.pem 和 privateKey.pem。我将它们都上传到公司设置的 Certficate 和 Key 部分的 Netsuite 中。
我的问题主要是现在如何从文件中获取私钥以与加密模块一起使用?
这是我目前所拥有的。
"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 中收到来自 "create 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-----
我正在尝试签署 https 请求,为此我需要加密摘要。从 api 我生成了 certificate.pem 和 privateKey.pem。我将它们都上传到公司设置的 Certficate 和 Key 部分的 Netsuite 中。
我的问题主要是现在如何从文件中获取私钥以与加密模块一起使用?
这是我目前所拥有的。 "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 中收到来自 "create 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-----