Electron检测SSL证书错误及按域名配置白名单忽略错误方案咨询
Electron SSL证书错误处理实现方案
两个需求都可以通过Electron原生API实现,具体方案如下:
1. 全场景全类型SSL错误检测
Electron提供了全局的certificate-error事件,可以覆盖所有SSL错误场景:
- 触发时机覆盖主页面加载、子资源加载、iframe嵌入、AJAX/Fetch请求等所有发起HTTPS请求的场景
- 错误类型覆盖证书过期、自签名证书、域名不匹配、证书链不完整、证书被吊销等所有官方定义的SSL错误
事件监听示例代码:
const { app } = require('electron') app.on('certificate-error', (event, webContents, url, error, certificate, callback) => { // 可在此处获取错误详情做日志记录或后续判断 console.log(`SSL错误类型:${error},请求URL:${url},证书所属域名:${certificate.subjectName}`) })
2. 域名白名单配置
可根据需求实现两种生效模式的白名单:
- 会话周期生效:将允许放行的域名存到内存数组中,在
certificate-error事件中匹配当前请求域名,命中白名单则调用callback(true)放行,应用重启后白名单自动失效 - 永久生效:将白名单域名存储到本地持久化位置(比如本地JSON文件、electron-store实例、系统注册表),应用启动时读取到内存,后续匹配逻辑和会话级一致,重启后配置不会丢失
如果需要实现Chrome类似的用户手动确认放行逻辑,可以在捕获到证书错误时弹出自定义提示窗口,用户确认后再将对应域名加入白名单即可。
注意:生产环境请仅给明确可信的域名加白名单,不要全局忽略所有SSL错误,避免引入中间人攻击安全风险
内容的提问来源于stack exchange,提问作者Maciej Kravchyk
相关产品推荐
相关产品推荐

