Узел httpAgent с прокси и сертификатами (https-proxy-agent с TLS)
Итак, я пытаюсь позвонить в свой тест узла (AVA), который использует прокси-сервер и авторизацию TLS. Я использую:
- машинопись: 3.9.3
- ts-узел: 8.10.2
- аксиомы: 0.21.1
- https-прокси-агент: 5.0.0
Что я узнал до сих пор:
-
AxiosProxyConfig
на данный момент сломан, поэтому я не могу его использовать: прокси Axios не работает , -
https-proxy-agent
действительно работает, как было сказано kraiz в ветке ошибок , но ... я ничего не вижу,cert
иkey
Я не могу предоставить те, которые мне не удалось найти, кроме этой страницы npm https-proxy-agent .
Итак, чтобы завершить код, это то, что я пытаюсь сделать, и я понятия не имею, как этого добиться:
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,
},
}
});