Узел httpAgent с прокси и сертификатами (https-proxy-agent с TLS)

Итак, я пытаюсь позвонить в свой тест узла (AVA), который использует прокси-сервер и авторизацию TLS. Я использую:

  • машинопись: 3.9.3
  • ts-узел: 8.10.2
  • аксиомы: 0.21.1
  • https-прокси-агент: 5.0.0

Что я узнал до сих пор:

Итак, чтобы завершить код, это то, что я пытаюсь сделать, и я понятия не имею, как этого добиться:

      const httpsProxyAgent = new HttpsProxyAgent({
        cert: this.cert,
        key: this.key,
        ca: this.ca,
        host: PROXY_HOST,
        port: PROXY_PORT,
      });
// then later
const config: AxiosRequestConfig = {
  httpsAgent: httpsProxyAgent,
  headers: { ... }
  proxy: false
};

Хотя HttpsProxyAgent кажется, расширяется Agent эти параметры (часть сертификатов) не используются, и я получаю сообщение об ошибке, указывающее, что caигнорируется. Кто-нибудь знает, как предоставить эти сертификаты этому агенту? Я не мог найти ответов. Я не эксперт по узлам, поэтому, возможно, я пропустил что-то очевидное.

Заранее спасибо!

PS. Я также пробовал Objects.assign() так

      // this proxy agent is working for sure (tested)
const httpsProxyAgent = new HttpsProxyAgent('http://proxy:1234');

// trying to assign certs after creating httpsProxyAgent
Object.assign(httpsAgent.options, {
  ca: this.ca,
  key: this.key,
  cert: this.cert
});

// then again passing it to AxiosRequestConfig.httpAgent and making a call

результат был снова UNABLE_TO_VERIFY_LEAF_SIGNATURE.

PSS. Я видел это better-https-proxy-agent( страница git ), которая, похоже, имеет решение, единственный недостаток - я не вижу поддержки TS.

1 ответ

Вы можете добавить сертификаты в агенте и прокси в вызове запроса, примерно так...

      // First create the Agent
const agent = new https.Agent({
  ca: certificates...
});

// Then create an instance of Axios with the agent
const axiosInstance = axios.create({
  httpsAgent: agent
});

// And Last set the proxy options
const response: AxiosResponse = await axiosInstance.post(payload, {
  headers: {
    "Content-Type": "text/xml",
  },
  proxy: {
    host,
    port,
    protocol: "http://",
    auth: {
      username,
      password,
    },
  }
});
Другие вопросы по тегам