Как пройти аутентификацию в API с SSL-сертификатом? - PullRequest
0 голосов
/ 27 марта 2020

Мне нужен доступ к 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-сертификатов и надеюсь, что вы мне поможете.

Спасибо

...