这是对早期问题(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-webdriver/
我有一个名为“client1.p12”的证书,我用它来验证服务器。我设置上述配置文件以使用该证书。在配置文件创建过程中的第7步之后,我转到新打开的firefox浏览器并转到Options-> Privacy&安全 - >证书 - >查看证书,选择“您的证书”标签,点击“导入”,浏览到“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");
将返回null。它没有,所以它返回的配置文件是合法的。此配置文件与我在本地的配置文件相同,它应该具有提供证书的信息。但是,它似乎没有发送证书。
有谁知道这怎么可能发生?证据表明该配置文件允许用户发送证书。证据还表明Jenkins项目正在使用该配置文件。但是,它看起来似乎没有发送证书。
知道弱链接可能是什么?
答案 0 :(得分:0)
问题似乎是我试图将配置文件从Windows复制到linux。尽管我已经阅读了一些信息(http://forum.notebookreview.com/threads/migrate-firefox-profile-from-windows-to-linux.444601/),但看起来需要在CentOS机器上设置配置文件。
我只是用桌面获取了一个CentOS实例,在那里设置了配置文件并将其复制到我正在使用的无GUI机器上的firefox实例中。那很简单。