LoginSignup
5
7

More than 5 years have passed since last update.

ElectronでBrowserWindowやwebviewの証明書エラーに対処する

Last updated at Posted at 2016-03-10

アカウント作ったのだし、なんか書きましょうかね。

ElectronのBrowserWindow<webview>でhttpsのURLを読み込む時に証明書の検証でエラーがある場合、Electronは何もせずそのまま通信失敗となります。これではアプリ内ブラウザのような機能としては使い難いので、適切にエラー処理をする必要があります。

エラーの発生時にはappモジュールやwebContentscertificate-errorイベントが発生します。そこでevent.preventDefault()で元の動作を止め、callback(true)を呼び出すことで証明書エラーを無視して通信を続行することができます。

app.on('certificate-error', function(event, webContents, url, error, certificate, callback) {
  event.preventDefault();
  callback(true);
});

上のコードのように問答無用でエラーを無視してもいいですが、ユーザーにエラーを無視するか確認させたいのであれば以下のようにダイアログを表示し、callback()を非同期で呼び出すことができます。

app.on('certificate-error', function(event, webContents, url, error, certificate, callback) {
  event.preventDefault();
  electron.dialog.showMessageBox(mainWindow, {
    title: 'Certificate error',
    message: `Do you trust certificate from "${certificate.issuerName}"?`,
    detail: `URL: ${url}\nError: ${error}`,
    type: 'warning',
    buttons: [
      'Yes',
      'No'
    ],
    cancelId: 1
  }, function(response) {
    if (response === 0) {
      callback(true);
    }
    else {
      callback(false);
    }
  });
});

参考

5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7