Мне нужен доступ к API поставщика услуг (для моей компании). Итак, мне дали «do c» и сертификат SSL в нескольких формах (.jks, .p12, .pem), на которых я работаю с NodeJS, поэтому я взял .pem, внутри есть 2 сертификата и 1 зашифрованный закрытый ключ.
Я разделил .pem на 3 файла, mycert.crt.pem, mycert.key.pem, mycert2 .crt.pem (я проверил https://www.sslshopper.com/certificate-key-matcher.html, чтобы узнать, какой сертификат используется с ключом)
Итак, мой NodeJS, я использовал наименьший возможный модуль, чтобы избежать проблемы с модулем:
const cert = fs.readFileSync(path.resolve('cert', 'mycert.crt.pem'))
const key = fs.readFileSync(path.resolve('cert', 'mycert.key.pem'))
let options = {
hostname: 'https://serviceproviderurl.com',
path: 'v1/api/example',
method: 'POST',
key: key,
cert: cert
}
let req = https.request(options, function (res) {
console.log(res.statusCode)
res.on('data', function (d) {
process.stdout.write(d)
})
})
req.end()
И сообщение об ошибке:
Error: error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt
at Object.createSecureContext (_tls_common.js:151:17)
at Object.connect (_tls_wrap.js:1407:48)
at Agent.createConnection (https.js:125:22)
at Agent.createSocket (_http_agent.js:234:26)
at Agent.addRequest (_http_agent.js:193:10)
at new ClientRequest (_http_client.js:276:16)
at Object.request (https.js:309:10)
at Object.<anonymous> (/mnt/c/Project/test.js:74:17)
at Module._compile (internal/modules/cjs/loader.js:959:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:995:10) {
opensslErrorStack: [
'error:0907B00D:PEM routines:PEM_read_bio_PrivateKey:ASN1 lib',
'error:2306A075:PKCS12 routines:PKCS12_item_decrypt_d2i:pkcs12 pbe crypt error',
'error:23077074:PKCS12 routines:PKCS12_pbe_crypt:pkcs12 cipherfinal error'
],
library: 'digital envelope routines',
function: 'EVP_DecryptFinal_ex',
reason: 'bad decrypt',
code: 'ERR_OSSL_EVP_BAD_DECRYPT'
Кажется, я что-то пропустил с 3 сертификатами. Также они не дали мне парольную фразу, это нормально? Я не очень хорошо разбираюсь в использовании SSL-сертификатов и надеюсь, что вы мне поможете.
Спасибо