0

这是前面问题(Authenticating Selenium WebDriver (Java) with .p12 certificate)的延续。我找到了该问题的部分解决方案,但被困在这里。

我创建了一个名为“eAgency-Client1”的firefox配置文件,遵循与这些类似的指示:https ://seleniumbycharan.wordpress.com/2015/07/12/how-to-create-custom-firefox-profile-in-selenium-网络驱动程序/

我有一个名为“client1.p12”的证书,用于对服务器进行身份验证。我设置了上述配置文件以使用该证书。在配置文件创建过程中的第 7 步之后,我转到新打开的 Firefox 浏览器并转到选项->隐私和安全->证书->查看证书,选择“您的证书”选项卡,单击“导入”,浏览到“client1.p12”文件并输入密码。

我正在将此配置文件(“eAgency-Client1”)与 Selenium 一起使用。我使用 Selenium 代码访问我正在使用的站点,如下所示:

ProfilesIni profile = new ProfilesIni();
FirefoxProfile ffProfile = profile.getProfile("eAgency-Client1");
ffProfile.setPreference("security.default_personal_cert", "Select Automatically");
. . . 
FirefoxOptions firefoxOptions = new FirefoxOptions();
. . . 
firefoxOptions.setProfile(ffProfile);
. . .
driver = new FirefoxDriver(firefoxOptions);
. . . 
driver.get(<URL>);

不幸的是,这段代码在我的本地机器和 Jenkins 服务器上的功能不同。我通过打印页面源来检查这一点。

当我在本地运行它时,结果源是我期望的(这里复制太长了。)当我在 Jenkins 中运行它时,我得到以下信息:

<html><head><title>400 No required SSL certificate was sent</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<center>No required SSL certificate was sent</center>
<hr><center>nginx/1.10.2</center>


</body></html>

这是我在开始使用该配置文件之前在本地获得的内容。它表明“client1.p12”没有被发送。一旦我开始使用配置文件,配置文件将允许 Firefox 发送证书。但是,我知道该配置文件已成功复制到 Jenkins 并正在使用,因为如果它不是以下行

FirefoxProfile ffProfile = profile.getProfile("eAgency-Client1");

将返回一个空值。它没有,所以它返回的配置文件是合法的。此配置文件与我在本地拥有的配置文件相同,它应该具有提供证书的信息。但是,它似乎没有发送证书。

有谁知道这是怎么发生的?证据表明配置文件允许用户发送证书。证据还表明 Jenkins 项目正在使用该配置文件。但是,看起来证书也没有被发送。

知道薄弱环节可能是什么吗?

4

1 回答 1

0

问题似乎是我试图将配置文件从 Windows 复制到 linux。尽管我已经阅读了一些信息(http://forum.notebookreview.com/threads/migrate-firefox-profile-from-windows-to-linux.444601/),但似乎需要设置配置文件在 CentOS 机器上。

我只是获得了一个带有桌面的 CentOS 实例,在那里设置了配置文件并将其复制到我正在使用的 GUIless 机器上的 firefox 实例。就这么简单。

于 2018-03-12T20:19:23.383 回答