での SSL 証明書の処理方法 Selenium

⚡ スマートサマリー

SSL証明書エラーは Selenium ブラウザが信頼できない証明書や期限切れの証明書を拒否した瞬間をテストするため、すべての WebDriver スクリプトには、証明書を受け入れて自動化を続行できるようにするブラウザ固有の機能が必要です。

  • 🔘 定義: SSLはブラウザとサーバー間の通信を暗号化し、証明書はサーバーの身元を証明する。
  • ☑️ エラー発生トリガー: ブラウザは、信頼できない証明書、期限切れの証明書、失効した証明書、または自己署名証明書をブロックし、警告ページを表示します。
  • ✅ Firefox: A Firefox プロファイルは、ドライバが起動する前に setAcceptUntrustedCertificates と setAssumeUntrustedCertificateIssuer を設定します。
  • 🧪 Chrome: ACCEPT_SSL_CERTS を指定した DesiredCapabilities は、証明書を受け入れます。 Selenium 2本、そして Selenium 3.
  • 🛠️ Internet Explorer: A Javaスクリプトでoverridelink要素をクリックすると、警告ページがスキップされます。
  • ⚠️ Selenium 4: ChromeOptions の setAcceptInsecureCerts、 FirefoxOptionsまたはEdgeOptionsは、DesiredCapabilitiesに取って代わります。

での SSL 証明書の処理方法 Selenium

SSL証明書 Selenium

SSL (Secure Sockets Layer) は、サーバーとブラウザであるクライアントとの間に安全な接続を確立するための標準セキュリティ プロトコルです。

SSL証明書は、強力な暗号化とデジタル署名によって、サーバーとクライアントアプリケーション間でやり取りされるデータを保護します。サイト所有者は、SSL証明書またはコード署名証明書のいずれかをインストールします。

SSL証明書のメリット

SSL 証明書を使用すると、次のような多くの利点があります。

  • ビジネスの急速な成長を促進するために、ユーザーと顧客の信頼を高めることができます。
  • これらの証明書は、オンライン取引やクレジット カード/デビットカード データなどの顧客の機密情報を保護するのに役立ちます。
  • 署名証明書は、ダウンロード数が最大になり、ユーザーから良いレビューを得る傾向があります。

SSL で保護された Web サイトは次から始まります https:// 接続が安全に確立されている場合は、鍵のアイコンまたは緑色のアドレス バーが表示されます。

たとえば、ネットバンキングで取引をしたい場合や、商品を購入したい場合、 モバイル Flipkart などの電子商取引サイトを通じて電話をかけるか、 Amazon.

Web ブラウザとサーバーの間で何が起こるか

  1. ブラウザは、SSL で保護された Web サイトに接続しようとします。 ブラウザはウェブサーバーに自身を識別するよう要求します
  2. サーバーはブラウザにSSL証明書のコピーを送信します
  3. ブラウザは SSL 証明書が本物かどうかを検証します。 そうであれば、サーバーにメッセージを送信します
  4. サーバーはデジタル署名された確認応答を送り返し、SSL 暗号化セッションを開始します。
  5. 暗号化されたデータはサーバーとブラウザ間で共有されます

カード番号とログイン認証情報はセッションを通じてやり取りされるため、通信はエンドツーエンドで暗号化され、傍受されてはならない。

例えば、下部に表示される南京錠のアイコンとアドレスバーは、証明書が承認されたことを示しています。

  1. タイプ https://netbanking.hdfcbank.com/netbanking/ .
  2. Enterキーを押します。
  3. 以下のように、ブラウザに緑色のアドレス バーが表示されます。

HDFCネットバンキングページのブラウザのアドレスバーが緑色になっているのは、SSLで保護されているためです。

SSL 証明書が安全な接続を確立する方法

下の図 trac握手について説明し、続く番号付きの手順でそれぞれのやり取りを説明します。

ウェブブラウザとウェブサーバー間のSSLハンドシェイクの図

  1. ブラウザ HTTPS リクエストをサーバーに送信します。
  2. ここで、サーバーは、ブラウザーが信頼されていることを証明するために、ブラウザーに何らかの ID を提供する必要があります。 これは、SSL 証明書のコピーをブラウザに送信することで実行できます。
  3. 各ブラウザには、信頼できる CA の独自のリストがあります。 ブラウザは、信頼できる CA のリストと照合して証明書のルートを確認し、証明書の有効期限が切れていないこと、取り消されていないこと、および接続先の Web サイトに対して共通名が有効であることを確認します。
  4. ブラウザが証明書を信頼すると、サーバーとブラウザの間に暗号化されたセッションが作成されます。
  5. サーバーとブラウザは暗号化されたメッセージを送信できます

SSL証明書のタイプ

ブラウザとサーバーは SSL 証明書メカニズムを使用して、安全な接続を確立できます。 この接続には、XNUMX 種類の証明書の検証が含まれます。

  • Root(根)
  • 中級
  • サーバー証明書

SSL証明書取得の流れ

SSL 証明書を取得するプロセスには以下の手順が含まれます:-

  1. まず、CSR (証明書署名要求の作成) リクエストを作成する必要があります。
  2. CSR リクエストにより CSR データ ファイルが作成され、CA (認証局) と呼ばれる SSL 証明書発行者に送信されます。
  3. CA は CSR データ ファイルを使用してサーバーの SSL 証明書を作成します。
  4. SSL 証明書を受け取ったら、それをサーバーにインストールする必要があります。
  5. SSL 証明書と CA のルート証明書を結び付ける中間証明書もインストールする必要があります。

下の画像は XNUMX つの証明書すべてを表しています。 ルート証明書、中間証明書、およびサーバー証明書。

ルート証明書、中間証明書、サーバー証明書を示す証明書チェーン

SSL証明書の検証方法

SSL は、Web サーバー コンピュータと Web サーバー ブラウザに存在するプログラムと暗号化/復号化ルーチンの組み合わせによって機能します。

SSL証明書には基本的に以下の情報が含まれます。

  1. Web サイト所有者の ID である件名。
  2. 有効性情報 - 公開キーと秘密キー。

秘密鍵と公開鍵は、それぞれ固有の関係を持つ2つの暗号鍵(数値)です。公開鍵で暗号化されたデータは、秘密鍵でのみ復号化できます。ブラウザでは、証明書を検査する際に、以下のようにこれらのフィールドが表示されます。

証明書の詳細ペインには、件名、有効期間、公開鍵が表示されます。

証明書によりサーバーとクライアント間で安全な接続が確立されない場合、次の SSL 証明書エラーが発生します。

SSL証明書エラーの種類

HTTPSリクエストを入力した際に、ブラウザから「この接続は信頼されていません」または「サイトのセキュリティ証明書は信頼されていません」という応答が返ってきたとします。ブラウザは提示された証明書を使用して安全な接続を確立できなかったため、処理を停止し、ユーザーに適切な対応を求めます。

さまざまなブラウザで証明書が原因で発生する可能性のあるエラーの種類は、次のようなものです。

  1. 火災Fox – この接続は信頼できません
  2. Google Chrome – このサイトのセキュリティは信頼できません
  3. インターネットエクスプローラー(IE) – この Web サイトによって提示されたこのセキュリティ証明書は、信頼された認証局 (CA) によって信頼されていませんでした。

以下のスクリーンショットは、信頼できない証明書が生成する中間表示を示しています。

無効なSSL証明書のためにブラウザが表示する信頼できない接続の警告ページ

を使用して SSL 証明書エラーを処理する方法 Selenium ウェブドライバー

と仮定します テストスクリプト 上記の「信頼されていない接続」ページにアクセスします。スクリプトを調整して、SSL 例外を単独で処理するようにする必要があります。 オートメーション.

変更は使用中のブラウザインスタンスに依存し、ここで希望する機能が登場します。希望する機能は、ドライバインスタンスを構成します。 Selenium WebDriver(ChromeDriverを含む)、 Firefoxドライバーとインターネットエクスプローラー。

以下の手順は Selenium 各ブラウザの「信頼できない接続」状態を解消するためのスクリプト。

⚠️ Selenium 4年の注記: DesiredCapabilities クラスは削除されました Selenium 4. ブラウザのオプションクラスは、単一のW3C機能を通じて同じ設定を伝達するようになりました。 安全でない証明書を受け入れる.

ブラウザ Selenium 4クラス コー​​ル
Chrome Chromeオプション setAcceptInsecureCerts(true)
Firefox Firefoxオプション setAcceptInsecureCerts(true)
エッジ(Edge) エッジオプション setAcceptInsecureCerts(true)
Safari Javascript執行者 一時的なバイパススクリプト
ChromeOptions options = new ChromeOptions();
options.setAcceptInsecureCerts(true);
WebDriver driver = new ChromeDriver(options);

での SSL 証明書エラー処理 Firefox

でのSSL証明書エラーの処理用 Firefox、必要な機能を使用する必要があります Selenium Webdriver をインストールし、次の手順に従います。

ステップ1) まず、新しい Firefox プロフィール いう "私のプロフィール"

ステップ2) 次に、以下のようにスクリプトで myProfile にアクセスし、 Firefoxプロファイルオブジェクト。

ProfilesIni prof = new ProfilesIni()				
FirefoxProfile ffProfile= prof.getProfile ("myProfile")

ステップ3) 次に、Fire の「setAcceptUntrustedCertificates」と「setAssumeUntrustedCertificateIssuer」プロパティを設定する必要があります。 Fox プロフィール。

ffProfile.setAcceptUntrustedCertificates(true) 
ffProfile.setAssumeUntrustedCertificateIssuer(false)

ステップ4) 火を使ってFox ファイアーのプロフィールFox ドライバーオブジェクト。

WebDriver driver = new FirefoxDriver (ffProfile)

注意: setAcceptUntrustedCertificates" と "setAssumeUntrustedCertificateIssuer「Webブラウザにおける証明書エラーを処理する機能」です。

⚠️ バージョンに関する注記: 上記のプロファイルベースのコードは、 Selenium 2本、そして Selenium 3。 に Selenium 4 プロフィールは以下から添付されます Firefoxオプション、そして Firefox デフォルトで安全性の低い証明書を受け入れる。

Chrome での SSL 証明書エラー処理

ChromeでSSLエラーを処理するために、以下のDesiredCapabilitiesオブジェクトはすべてのSSL証明書を受け入れるため、実行中にユーザーに証明書の警告が表示されません。

以下のように DesiredCapabilities クラスのインスタンスを作成する必要があります:-

DesiredCapabilities handlSSLErr = DesiredCapabilities.chrome ()       
handlSSLErr.setCapability (CapabilityType.ACCEPT_SSL_CERTS, true)
WebDriver driver = new ChromeDriver (handlSSLErr);

⚠️ バージョンに関する注記: CapabilityType.ACCEPT_SSL_CERTS は古い JSON Wire Protocol に属します。実行時に、以前に示した ChromeOptions スニペットに置き換えてください。 Selenium 4.

IE での SSL 証明書エラー処理

Chrome ブラウザでの SSL 証明書の処理とは異なり、 FirefoxIEでは、次のように処理する必要があるかもしれません。 ジャバスクリプト.

IEでSSL証明書を処理するには、2つの方法があります。

方法1) インタースティシャル広告に表示される「このウェブサイトに進む(非推奨)」というリンクをクリックしてください。このリンクには「overridelink」というIDが付与されており、下のスクリーンショットに示すように、F12キーで開いたHTMLペインで確認できます。

Internet Explorerの証明書警告と「このWebサイトに進む」オーバーライドリンク

driver.navigate() メソッドを使用してリンクをクリックします。 Javaスクリプトは以下のとおりです。

driver.navigate ().to ("javascript:document.getElementById('overridelink').click()");

方法2) 2つ目の方法は、ChromeのSSL処理コードと非常によく似ています。

DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
System.setProperty("webdriver.ie.driver","IEDriverServer.exe");
WebDriver driver = new InternetExplorerDriver(capabilities);

上記のコードは、IE での SSL 証明書エラーの処理に役立ちます。

⚠️ バージョンに関する注記: Internet Explorer 11 は 2022 年 6 月にサポートが終了しました。同じシナリオを次のブラウザで実行してください。 Microsoft Edge EdgeOptionsを使用するか、レガシーアプリケーションがまだ必要とする場合は、EdgeをIEモードで実行してください。

よくあるご質問

Chromiumプロジェクトは badssl.comこれは、有効期限切れ、自己署名、失効、およびホストが間違っているサブドメインを配信します。テストスクリプトを expired.badssl.com に向けることで、実際の証明書エラーを安全に再現できます。

いいえ。 Selenium 4 ブラウザの Options クラスを優先して削除しました。ChromeOptions を構築し、 FirefoxOptions または EdgeOptions オブジェクトで setAcceptInsecureCerts(true) を呼び出し、それをドライバのコンストラクタに渡します。

EdgeOptionsオブジェクトを作成し、setAcceptInsecureCerts(true)を呼び出して、それをEdgeDriverコンストラクタに渡します。このパターンはChromeと一致します。なぜなら、両方のブラウザはChromiumエンジンを共有しているからです。

SafariDriverにはaccept-insecure-certsスイッチがありません。 JavascriptCertificateWarningController.visitInsecureWebsiteWithTemporaryBypass() を実行するエグゼキュータ。これにより、そのセッションのみインタースティシャル警告がクリアされます。

ERR_CERT_DATE_INVALID は証明書の有効期限切れ、ERR_CERT_REVOKED は証明書の失効、ERR_CERT_AUTHORITY_INVALID は自己署名証明書または信頼できない発行者を示します。このコードは、スクリプトを変更する前に原因を特定します。

機械学習は、証明書の失敗をエラーコードとホストごとにグループ化し、期限切れのステージング証明書と実際の不具合を区別します。このクラスタリングにより、1つの環境問題が無関係なテストバグとして多数記録されることを防ぎます。

Yes. GitHubコパイロット オプションオブジェクトとドライバコンストラクタはコメントからドラフトされますが、削除された DesiredCapabilities 呼び出しではなく setAcceptInsecureCerts を提案していることを確認してください。

テスト環境でのみ有効です。すべての証明書を受け入れると、有効期限、ホスト名、証明書チェーンの欠陥が隠蔽されるため、本番環境の簡易テストではこのフラグを使用せず、セキュリティテストを行う際に証明書を明示的に検証してください。