11

Seleniumと任意のブラウザでクライアント側のSSL証明書をテストすることは可能ですか?たとえば、Webドライバーを作成して、そのダミーの証明書を提供できますか?または、準備されたFirefoxプロファイルを使用しますか?

4

2 に答える 2

16

SSLクライアント側証明書用のSeleniumFirefoxテストプロファイルの作成

クライアント証明書がインポートされているSeleniumのWebDriverFirefoxプロファイルを準備する必要があります。

まず、テストコードで次の構成を使用してWebDriverを起動します。

# Pre-seeded Firefox profile directory
profile_directory = os.path.join(os.path.dirname(__file__), "..", "..", "certs", "firefox-client-ssl-profile")
self.assertTrue(os.path.exists(profile_directory))

profile = FirefoxProfile(profile_directory)

# Make sure the client side certificate selection does not interrupt the test
# XXX: What happens in other language versions?
profile.set_preference("security.default_personal_cert", "Select Automatically")
self.driver = WebDriver(firefox_profile=profile)

self.selenium_helper = SeleniumHelper(self, self.driver)
self.selenium_helper.driver = self.driver

単体テストを開始し、Zopeテストサーバーが起動するまでそれらを駆動します。「importpdb;pdb.set_trace()」でテストを停止します

これで、Seleniumの「WebDriver」Firefoxインスタンスが画面に表示されます。

クライアント側の証明書をインポートします。[設定]>[詳細設定]>[暗号化]>[証明書の表示]。クライアント側の証明書サプライから「client.p12」をインポートします。

WebdriverのFirefoxでクライアント側の証明書ダイアログをトリガーするURLにアクセスします::

    https://yourservevr/triggers-client-side-certificate-ssl-handshake

これにより、テストサーバーに対してクライアント側の証明書を受け入れるように求められます。すべてを手動で受け入れます。

メニューの[ヘルプ]>[トラブルシューティング情報]>[アプリケーションの基本]>[Finderに表示]にアクセスします。これにより、Webdriverのアクティブなプロファイルファイルを保持している一時ディレクトリが開きます。

Firefoxプロファイルファイルcert8.dbkey3.dbユニットテストパッケージWebDriverのFirefoxプロファイルのシードフォルダにコピーします。これは、テストの開始時にSeleniumがFirefoxWebドライバーのシードを選択するフォルダーfirefox-client-ssl-profileです。

テストを中断します。テストを再開します。再び一時停止するまで実行します。WebdriverのFirefoxで、[設定]>[詳細設定]>[暗号化]>[証明書の表示]で最後に実行したときに承認した証明書が含まれていることを設定で確認します。

より詳しい情報

于 2012-07-02T23:11:11.763 に答える
0

これが役立つかどうかはわかりませんが、プロファイルの設定の一部を変更できます。Javaでは、これを行うことができます。

ProfilesIni allProfiles = new ProfilesIni();
    FirefoxProfile profile = allProfiles.getProfile("default"); //change profile name. there is a note somewhere on how to change it
    profile.setPreference(uaKey, uaValue);
    profile.setAcceptUntrustedCertificates(acceptUntrustedSsl);

これがあなたに必要なものかどうかはわかりません。

于 2012-06-05T17:02:45.990 に答える