LoginSignup
0
1

More than 1 year has passed since last update.

CefSharpでSSL証明書エラーを回避する方法

Last updated at Posted at 2021-06-17

#初めに
CefSharpを使って自動ログインブラウザを作っていた際に、ログインするサイトがSSL証明書エラーでアクセスできず、1日ほど詰まったので、解決方法を共有します。

#環境
Windows10 HOME
Visual Studio 2019 Community

#ライブラリ
.NET framework
CefSharp.WinForms

#問題
SSL証明書エラーが出るサイトにCefSharpブラウザからアクセスできない。
アクセスしようしても真っ白い画面が表示されるだけ。

#解決方法
RequestHandlerを実装する。

ExampleRequestHandler.cs

using CefSharp;
using CefSharp.Handler;
using System.Threading.Tasks;

namespace CefSharpTest
{
    public class ExampleRequestHandler : RequestHandler
    {
        protected override bool OnCertificateError(IWebBrowser chromiumWebBrowser, IBrowser browser, CefErrorCode errorCode, string requestUrl, ISslInfo sslInfo, IRequestCallback callback)
        {
            Task.Run(() =>
            {
                if (!callback.IsDisposed)
                {
                    using (callback)
                    {
                        // 許可するURL
                        if (requestUrl.ToLower().Contains("https://expired.badssl.com/"))
                        {
                            callback.Continue(true);
                        }
                        else
                        {
                            callback.Continue(false);
                        }
                    }
                }
            });
            return true;
        }
    }
}

Form1でインスタンス化。

From1.cs
using CefSharp;
using CefSharp.WinForms;
using System.Windows.Forms;

namespace CefSharpTest
{
    public partial class Form1 : Form
    {
        public ChromiumWebBrowser cefBrowser;

        private string URL = "https://expired.badssl.com/";

        public Form1()
        {
            InitializeComponent();

            // CefCharp初期設定
            CefSettings set = new CefSettings();
            set.Locale = "ja";
            set.AcceptLanguageList = "ja-JP";
            set.LogSeverity = LogSeverity.Disable;
            CefSharpSettings.ShutdownOnExit = false;
            Cef.Initialize(set);

            // CefSharpのWebViewを作成する。
            // ページを表示。
            cefBrowser = new ChromiumWebBrowser(URL);

            // コントロールを追加する。
            this.Controls.Add(cefBrowser);
            cefBrowser.Dock = DockStyle.Fill;
            cefBrowser.BringToFront();

            // 先ほど実装したRequestHandlerをインスタンス化
            cefBrowser.RequestHandler = new ExampleRequestHandler();
        }
    }
}

これでSSL証明書エラーが出るサイトでもアクセスできるようになります。
スクリーンショット 2021-06-17 213241.png

0
1
1

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
0
1