Я хочу хранить клиенты PEM / KEY (PFX) для последующего использования.Я хочу, чтобы пользователь, который загружал свои сертификаты на мой сервер, был единственным, кто может получить к нему доступ при входе в систему.
Затем сертификаты используются для совершения звонка поставщику платежей.Сервер может загружать только новый сертификат и добавлять «роль», которая является единственным пользователем, который может получить к нему доступ.Сервер также может удалять сертификаты.
Пробное хранилище ключей Azure и Hashicorp Vault, но безуспешно, вероятно потому, что я еще не нашел информацию, необходимую для выполнения этой работы
Это моетекущий рабочий код, но необходимо добавить поддержку сертификатов и ключей для входа в систему.
const payment = bodyData => {
return new Promise((resolve, reject) => {
fetch("https://mss.cpc.getswish.net/swish-cpcapi/api/v1/paymentrequests", {
agent: new https.Agent({
ca: fs.readFileSync(path.join(__dirname, "cert/Swish_TLS_RootCA.pem")),
// pfx: fs.readFileSync(path.join(__dirname, "cert/no.pfx")),
cert: fs.readFileSync(
path.join(
__dirname,
"cert/Swish_Merchant_TestCertificate_1231181189.pem"
)
),
key: fs.readFileSync(
path.join(
__dirname,
"cert/Swish_Merchant_TestCertificate_1231181189.key"
)
),
passphrase: "swish"
}),
method: "POST",
body: JSON.stringify(bodyData),
headers: { "Content-Type": "application/json" }
})
.then(res => {
if (res.status === 201) {
const location = res.headers.get("location");
if (location !== null) {
resolve(location.split("/").slice(-1)[0]);
} else {
reject(new Error("Unable to find 'location' parmas in header!"));
}
} else {
return res.json()
}
}).then(reject)
.catch(reject);
});
};