在Firefox和Selenium测试中自动化SSL客户端证书

时间:2012-06-04 22:08:48

标签: firefox ssl selenium webdriver ssl-certificate

是否可以使用Selenium和任何浏览器测试客户端SSL证书?例如。你能创建一个Web驱动程序并为它提供虚拟证书吗?或者使用准备好的Firefox个人资料?

2 个答案:

答案 0 :(得分:15)

为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中 在设置中查看它现在包含您在上次运行时批准的证书 在首选项>高级>加密>查看证书。

更多信息

答案 1 :(得分: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);

我不确定这是你需要的。