Как сделать HTTPS GET с клиентским сертификатом в Axios - PullRequest
0 голосов
/ 26 августа 2018

Как выполнить запрос на получение с клиентским сертификатом, как показано ниже, используя chai-http?

curl -k --key [key_path] --cert [cert-path]:secret 'https://127.0.0.1/url'

Следующий код возвращает ошибку:

Ошибка: ошибка: 0906A068: процедуры PEM: PEM_do_header: неверный пароль прочитан

Полагаю, это из-за отсутствия аргумента парольной фразы.

let chai = require('chai');
let chaiHttp = require('chai-http');

let should = chai.should();
var expect = chai.expect;

chai.use(chaiHttp);

// load certificates
let fs = require('fs')
let key = fs.readFileSync(__dirname + '/user.key')
let cert = fs.readFileSync(__dirname + '/user.crt')

describe('client certificate call', () => {
    it('should return data', () => {
        chai.request('https://127.0.0.1')
        .get('/url')
        .key(key)
        .cert(cert, 'secret')
        // .passphrase('secret')
        .end((err, res) => {
                res.should.have.status(200);
                done();
            });
        });

})

С помощью axios сделали свое дело:

var axios = require('axios')
var https = require('https')
var fs = require('fs')

var instance = axios.create({

    httpsAgent: new https.Agent({
        cert: fs.readFileSync(`user.cert`),
        key: fs.readFileSync(`user.key`),
        passphrase: 'secret',
        rejectUnauthorized: false
    })
})

instance.get('url')
        .then( function(response) {
        console.log(response)
    })
...