Для функционального тестирования встроенного сервера Grails необходимо наличие действующего сертификата SSL - PullRequest
3 голосов
/ 06 июня 2011

Я искал в Интернете, как решить мою проблему с функциональным тестированием Grails с использованием встроенного сервера + ssl, и был бы очень признателен за любую помощь в решении этой проблемы.

Мы до сих пор добились больших успехов в тестировании нашего веб-приложения Grails с Firefox с использованием Selenium WebDriver 2. Мы запускаем функциональные тесты автоматически с нашего сервера Jenkins (а иногда и с наших локальных компьютеров), используя плагин функционального тестирования для запуска и остановки нашего приложения, и плагин webdriver в сочетании.

Эта строка: profile.acceptUntrustedCertificates = true который используется для профиля нового экземпляра Firefox, был эффективен для нас, чтобы сделать весь SSL полностью действительным, насколько браузер заинтересован в наших тестах с Firefox.

Итак, хотя эта установка отлично работает с Firefox, нам все равно нужно запустить параллельный набор тестов для IE 8, но я просто не могу найти способ, как веб-драйвер справится с предупреждениями / препятствиями SSL в IE 8.

Поскольку мы здесь исключительно Mac (dev) / Linux (jenkins и т. Д.), Мы запускаем IE 8 в виртуальной машине Win 7 VirtualBox. Затем из экземпляра Win 7 VM мы запускаем автономный сервер WebDriver. Он прекрасно работает до того момента, когда тест достигает SSL-части нашего веб-приложения, после чего я получаю страницу предупреждения IE SSL, и тест сошел с рельсов.

Мы купили дешевый сертификат SSL для godaddy по этой причине, надеясь сделать IE счастливым, но я не смог найти способ сделать наш сертификат действительным и подписанным CA, а не только самостоятельно. -signed. Когда я проверяю сертификат в Chrome, например, он показывает мой сертификат, но также и самозаверяющий. Это CN по аналогии с testbox.example.com, и я добавил в / etc / hosts строку: 127.0.0.1 testbox.example.com.

Я сгенерировал CSR с помощью java keytool, а затем импортировал полученный подписанный сертификат, а также промежуточный сертификат, перекрестный сертификат и т. Д. В соответствии с инструкциями на сайте Godaddy. Я где-то видел, что Grails требует, чтобы его хранилище ключей сохраняло пароль 123456, что я и сделал.

Я успешно выполнил настройки SSL для обычных серверов, например, отдельная стеклянная рыба и кот, но я только что столкнулся с этой проблемой.

Спасибо! Джейми

Ответы [ 3 ]

0 голосов
/ 13 июля 2011

Я знаю, что это не очень чистое решение, но в IE8 отображается предупреждение о том, что с сертификатом что-то не так. Это предупреждение само по себе является действительной HTML-страницей, и вы можете щелкнуть ссылку, которая говорит что-то вроде:

Вы должны сделать это только один раз для сеанса. Таким образом, у нас просто есть небольшой шаг в наших тестах, который проверяет после вызова первой страницы, получим ли мы сообщение об ошибке. Если да, мы автоматически нажимаем на ссылку, а остальное работает нормально.

Опять же: я знаю, что это не чистое решение. Но это работает для нас. И необходимость правильно настроить хранилища ключей Java может быть проблемой. : -)

0 голосов
/ 13 июля 2011

Еще один подход:

Вы упомянули, что изменения в настройках IE не работают, поскольку WebDriver создает новый экземпляр IE.

IE хранит множество настроек в реестре Windows. Таким образом, «сертификат реестра IE» может стать хорошим началом для решения вашей проблемы. Вот один многообещающий результат:

http://www.ehow.com/how_5024374_fix-certificate-error-internet-explorer.html

Поскольку вы запускаете IE на виртуальной машине, я думаю, можно отключить функции безопасности IE на этом виртуальном компьютере. В противном случае я должен признать, что отключать такую ​​функцию безопасности по умолчанию не очень хорошая идея.

0 голосов
/ 07 июня 2011

Для тестирования просто установите свой сертификат в IE 8.

См. Что мне нужно сделать, чтобы Internet Explorer 8 принял самозаверяющий сертификат?

...