2013-04-10 1 views
1

я следующие шаги:
1) Создан самостоятельно подписанный сертификат через Keytool
2) Настроен разъем на 8443 порту в server.xml
3) Проверено, что и локальные: 8080 и локальные: 8433 доступны
4) Добавлены следующие ограничения безопасности на мой web.xmlURL-адреса, которые имеют транспортную гарантию КОНФИДЕНЦИАЛЬНУЮ по-прежнему доступны с помощью HTTP

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>securedapp</web-resource-name> 
     <url-pattern>/*</url-pattern> 
    </web-resource-collection> 
    <user-data-constraint> 
     <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
    </user-data-constraint> 
</security-constraint> 

Когда я иду в http://localhost:8080/MyApp/, нет редиректа https://localhost:8443/MyApp/. Насколько я понимаю, запросы с использованием HTTP для URL-адресов, транспортная гарантия которых CONFIDENTIAL, должны быть автоматически перенаправлены на один и тот же URL-адрес с помощью HTTPS.

Однако мое приложение остается доступным и работает с использованием как HTTP, так и HTTPS. Я использую Tomcat 6.0.36. Что мне не хватает?

Заранее спасибо.

+0

Выглядит нормально для меня до тех пор, как он правильно размещен внутри '' и не вложено ни в чем другое ...? –

ответ

1

Ответ на мой вопрос.

Я узнал, что это поведение вызвано флагом HTTP-коннектора secure. Я установил его ранее для целей тестирования и забыл об этом.

Когда разъем HTTP имеет secure="true" и нет существующего JSessionID печенья в браузере:

  • для HTTP запросов JSESSIONID хранятся в URL
  • для HTTPS просит JSESSIONID хранится в куках
  • КОНФИДЕНЦИАЛЬНАЯ транспортная гарантия не вызывает перенаправления на адрес с использованием HTTPS

Когда HTTP-коннект т е р имеет secure="false":

  • , как и ожидалось, запросы с использованием HTTP для URL-адреса которых транспортная гарантия является КОНФИДЕНЦИАЛЬНО автоматически перенаправляются на тот же URL, используя HTTPS