11

是否可以使用 Selenium 和任何浏览器测试客户端 SSL 证书?例如,您可以创建一个 Web 驱动程序并为其提供虚拟证书吗?或者使用准备好的 Firefox 配置文件?

4

2 回答 2

16

为 SSL 客户端证书创建 Selenium Firefox 测试配置文件

您需要准备 Selenium 的 WebDriver Firefox 配置文件,其中已导入客户端证书。

首先,您在测试代码中使用以下配置启动 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 测试服务器启动。使用“import pdb ; 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 在测试开始时为 Firefox Web 驱动程序挑选种子的文件夹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 回答