Axios CDN 使用 pfx https 证书

Axios CDN using pfx https certificate

0.20.0

调用成功

POST https://beta.credcoconnect.com/cc/listener net::ERR_BAD_SSL_CLIENT_AUTH_CERT

- **To Reproduce**

<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script> const agent = new https.Agent({ pfx: fs.readFileSync('auth/TopTierGroupLLC-10-8-20.pfx') });

$(".submitBt").click(function(e) {
    axios.post('https://beta.credcoconnect.com/cc/listener', { body: body })
    .then(response => {
    if (response)
    {
        console.log(response.status);
    } else {
        alert('sem resposta');
    }
    }); 
});

我只是在 HTML 页面中使用 axios 的 CDN,我想向 API 发送请求,但它要求提供身份验证证书。此证书有效,但我不知道如何让 axios 仅使用 axios CDN 读取此证书。

错误实际上是说远程证书无效,它可以 'read' 没问题。 beta.credcoconnect.com 处的服务器正在使用不受支持的根证书、超时证书或最有可能是自签名证书(来自浏览器上下文)。

这本质上是不可信的;尝试将新证书传递给调用是没有意义的,因为这不是问题所在,浏览器可以针对它不信任的任何 SSL 证书进行协商。您需要做的是:

(推荐)将远程 ssl 证书更改为有效证书,您可以完全免费执行此操作并使用 LetsEncrypt 自动执行此操作 (https://letsencrypt.org/)

中间层的想法是使用具有有效证书的后端代理作为中间人,并使用它来调用 beta.credcoconnect.com。在大多数语言中很容易使后端调用忽略 SSL 错误。如果您无法控制 beta.credcoconnect.com 托管来修复证书,这将是最好的主意。

尝试让浏览器在本地忽略 SSL 错误不是我认为您可以使用现代浏览器做的事情,XHR 对象上曾经有一个 'setOptions' 可以工作...但我认为您应该尝试其他 2 个选项之一。

最后但完全不推荐。如果这是一个受控环境,其中所有客户端都由您控制,而不是 public 网站,那么您可以将证书添加到客户端机器上的可信链中。这通常是使用 SSL 进行本地主机开发的方式。