Electron BrowserWindow/BrowserView loadURL with a client cer



My Electron桌面应用程序正在使用BrowserWindow.loadURL,BrowserView.loadURL或BrowserWindow.webContent.loadURL的方法在渲染器进程中访问https网站。但是,目标网站需要验证我的客户端证书。如何使用客户端证书提出请求?我有一个.crt文件,一个.key文件和两个CA证书文件。

我尝试了"选择客户端证书"事件,但它没有被触发。我也尝试了app.commandLine.appendSwitch('client-certificate',<.pfx证书文件的路径>),但它也没有用。

我在电子应用程序上尝试select-client-certificate时没有成功,但我能够通过执行以下操作使其工作。另一个重要的事情是,只有当您尝试在典型的浏览器(Safari,Chrome,Edge等)中执行此操作时,才会调用select-client-certificate,它会显示一个弹出窗口来选择证书。

const child = new BrowserWindow({
...
});
child.webContents.on('select-client-certificate', (event: Event,
url: string,
certificateList: Certificate[],
callback: (certificate: Certificate) => void) => {
console.log('select-client-certificate url', url)
console.log('select-client-certificate list', certificateList)
// IMPORTANT: to prevent the default.
event.preventDefault()
// Selects the first certificate in the list of available.
callback(certificateList[0])
});
// IMPORTANT: This is after .on('select-client-certificate')
await child.loadURL(url);

最新更新