2014-02-13 2 views
3

Несколько лет назад я написал приложение Delphi, которое открывает сайт интранета в TWebBrowser. Приложение отлично работает на Windows XP SP3, но в Windows 7 TWebBrowser показывает страницу с красным сертификатом в стиле IE8. Более того, нажатие «Продолжить на этом сайте» не открывает страницу. Интересно, что когда я открываю страницу либо в IE8 в Windows XP, либо в IE9 в Windows 7, она открывается успешно, и браузеры не сообщают об ошибке сертификата.Delphi - Ошибка сертификата в TWebBrowser, без ошибок в IE9

Можно ли настроить TWebBrowser или приложение или Windows самостоятельно таким образом, чтобы исключить страницу с ошибкой сертификата?

Я попытался запустить приложение в режиме администратора, с и без режима совместимости с Windows XP. Я установил сертификат страницы в каждый разумный магазин сертификатов. Я играл с настройками безопасности IE и настройками Internet Explorer FeatureControl в реестре. Ничто из этого не помогло.

ответ

4

(я переписал свой ответ после замечаний Дэвида Хеффернэн в.)

1. Обход

Выключение "Проверка на сервере certificate revocation" в "Internet Options \ Advanced \ Security" устранили страницу ошибки сертификата в TWebBrowser. Обратите внимание, что отключение проверки отзыва открывает дыру в безопасности (спасибо Дэвиду Хеффернану за то, что он подчеркивает это в своих комментариях).

Certificate Revocation Checkbox

2. Разница между Windows XP и 7

различное поведение было связано с этой this option is turned off on Windows XP by default, но на Windows 7 он включен. Странно, что этот параметр безопасности обрабатывается по-разному в разных версиях ОС. Windows XP должна была быть исправлена, чтобы включить этот параметр по умолчанию.

3. Проблема с сертификатом

Когда проверка отзыва включена, IE сообщает, что никаких проблем с сертификатом сайта и каждого сертификата в цепочке сертификатов не в порядке. Это вводит в заблуждение, потому что, если включен также элемент управления Internet Explorer , IE отображает предупреждение о сертификате, в котором говорится, что «Internet Explorer не смог связаться с эмитентом, чтобы гарантировать, что сертификат не был отозван».

Certificate Issuer Unreachable

4. Эффект режиме Silent

Когда проверка отзыва включена, и эмитент не может связаться, TWebBrowsershows a Security Alert popup с текстом «информация об аннулировании сертификата безопасности для этого сайт недоступен. Вы хотите продолжить? " К сожалению, когда свойство TWebBrowser.Silent равно True, запрос подавляется и автоматически выбирается «Нет». В моем случае включен режим «Без звука», потому что я хотел скрыть ошибки JavaScript на странице, поэтому TWebBrowser подпрыгнул прямо на страницу с ошибкой сертификата и не позволил мне продолжить.

Revocation Information Unavailable

5. Решение

Отверстие безопасности можно избежать, включив проверку отзыва, но в этом случае TWebBrowser.Silent должен быть False, и пользователю придется закрыть все всплывающие окна вручную (в появившемся всплывающем окне «Предупреждение безопасности» необходимо нажать «Да»). Поскольку мое приложение автоматически использует сайт (на основе кода, написанного на PascalScript), оно должно закрыть каждое всплывающее окно (эта функция уже реализована для всплывающих подсказок).

+0

Это не похоже на решение. –

+0

@DavidHeffernan Вот почему я использовал двойные кавычки. Нет никаких проблем с сертификатом сайта, он не отменяется. Несмотря на это, выключение проверки проверки отзыва. – kol

+0

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

Смежные вопросы