Профиль Firefox не работает, когда я копирую его в CentOS
Это продолжение предыдущего вопроса ( Аутентификация Selenium WebDriver (Java) с сертификатом.p12). Я нашел частичное решение этого вопроса, но застрял здесь.
Я создал профиль Firefox с именем "eAgency-Client1", следуя инструкциям, подобным этим: https://seleniumbycharan.wordpress.com/2015/07/12/how-to-create-custom-firefox-profile-in-selenium-webdriver/
У меня есть сертификат с именем 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");
вернул бы ноль. Это не так, поэтому профиль, который он возвращает, является законным. Этот профиль идентичен тому, что у меня есть локально, и в нем должна быть информация для предоставления сертификата. Однако, похоже, что он не отправляет сертификат.
У кого-нибудь есть идеи, как это может происходить? Имеющиеся данные свидетельствуют о том, что профиль позволяет пользователю отправить сертификат. Данные также свидетельствуют о том, что проект Дженкинс использует профиль. Тем не менее, похоже, что сертификат не отправляется.
Есть идеи, что такое слабое звено?
1 ответ
Кажется, проблема в том, что я пытался скопировать профиль из windows в linux. Несмотря на то, что некоторая информация, которую я прочитал ( http://forum.notebookreview.com/threads/migrate-firefox-profile-from-windows-to-linux.444601/), говорит, что профиль должен быть установлен на машине CentOS.
Я просто приобрел экземпляр CentOS с рабочим столом, настроил там профиль и скопировал его в экземпляр firefox на машине без GUI, которую я использовал. Так просто.