我如何信任来自电子应用程序的自签名证书?
How do I trust a self signed certificate from an electron app?
我有一个电子应用程序可以与我在 https://XXX.XX.XX.XXX:port 拥有的服务器同步,该服务器具有自签名证书。我如何信任我的电子应用程序的证书?
现在我得到:
Failed to load resource: net::ERR_INSECURE_RESPONSE
订阅 app
模块发出的 certificate-error
事件并在事件处理程序中验证您的自签名证书。
您需要将以下代码放入您的“shell”(核心电子初始化)文件中:
// SSL/TSL: this is the self signed certificate support
app.on('certificate-error', (event, webContents, url, error, certificate, callback) => {
// On certificate error we disable default behaviour (stop loading the page)
// and we then say "it is all fine - true" to the callback
event.preventDefault();
callback(true);
});
这将允许不安全(无效)的证书,例如自签名证书。
⚠ 请注意,这不是连接服务器的安全方式。
有关更多信息,请查看文档:
https://electron.atom.io/docs/api/app/#event-certificate-error
如果 'certificate-error'
事件不起作用,试试这个:
if (process.env.NODE_ENV === 'DEV') {
process.env.NODE_TLS_REJECT_UNAUTHORIZED = 0;
}
看来您也可以通过 setCertificateVerifyProc() 在 Electron 启动脚本的 BrowserWindow 端进行配置。我无法使用上述任何其他方法,至少在 Electron 10.4.4 中是这样。
例如
var win = new BrowserWindow({
...
});
win.webContents.session.setCertificateVerifyProc((request, callback) => {
var { hostname, certificate, validatedCertificate, verificationResult, errorCode } = request;
// Calling callback(0) accepts the certificate, calling callback(-2) rejects it.
if (isNotMyCertificate(certificate)) { callback(-2); return; }
callback(0);
});
其中 isNotMyCertificate() 验证证书中的数据是否属于您。 console.log() 它来发现证书结构。与一揽子允许所有证书相比,它可以让您更好地控制安全性。
参见 https://www.electronjs.org/docs/api/session#sessetcertificateverifyprocproc 中的 setCertificateVerifyProc()
了解更多详情。
在应用入口文件中,执行:
const { app } = require('electron')
app.commandLine.appendSwitch('ignore-certificate-errors')
我有一个电子应用程序可以与我在 https://XXX.XX.XX.XXX:port 拥有的服务器同步,该服务器具有自签名证书。我如何信任我的电子应用程序的证书?
现在我得到:
Failed to load resource: net::ERR_INSECURE_RESPONSE
订阅 app
模块发出的 certificate-error
事件并在事件处理程序中验证您的自签名证书。
您需要将以下代码放入您的“shell”(核心电子初始化)文件中:
// SSL/TSL: this is the self signed certificate support
app.on('certificate-error', (event, webContents, url, error, certificate, callback) => {
// On certificate error we disable default behaviour (stop loading the page)
// and we then say "it is all fine - true" to the callback
event.preventDefault();
callback(true);
});
这将允许不安全(无效)的证书,例如自签名证书。
⚠ 请注意,这不是连接服务器的安全方式。
有关更多信息,请查看文档:
https://electron.atom.io/docs/api/app/#event-certificate-error
如果 'certificate-error'
事件不起作用,试试这个:
if (process.env.NODE_ENV === 'DEV') {
process.env.NODE_TLS_REJECT_UNAUTHORIZED = 0;
}
看来您也可以通过 setCertificateVerifyProc() 在 Electron 启动脚本的 BrowserWindow 端进行配置。我无法使用上述任何其他方法,至少在 Electron 10.4.4 中是这样。
例如
var win = new BrowserWindow({
...
});
win.webContents.session.setCertificateVerifyProc((request, callback) => {
var { hostname, certificate, validatedCertificate, verificationResult, errorCode } = request;
// Calling callback(0) accepts the certificate, calling callback(-2) rejects it.
if (isNotMyCertificate(certificate)) { callback(-2); return; }
callback(0);
});
其中 isNotMyCertificate() 验证证书中的数据是否属于您。 console.log() 它来发现证书结构。与一揽子允许所有证书相比,它可以让您更好地控制安全性。
参见 https://www.electronjs.org/docs/api/session#sessetcertificateverifyprocproc 中的 setCertificateVerifyProc() 了解更多详情。
在应用入口文件中,执行:
const { app } = require('electron')
app.commandLine.appendSwitch('ignore-certificate-errors')