2009-09-22 7 views
1

У меня есть небольшая проблема с использованием SSL на Tomcat, который находится за Apache. Я использую Google все утро, чтобы попытаться найти хорошее решение, но пока ничего.Tomcat за Apache: использование SSL с j_security_check

Как часть моей конфигурации SSL VirtualHost У меня есть

<Location /MyApp/> 
    ProxyPass http://localhost:8080/MyApp/ 
</Location> 

Это прекрасно работает в большинстве случаев, но j_security_check, после успешного входа в систему из https://mysite.com/MyApp, перенаправляет на HTTP страницу http://mysite.com/MyApp/secret.html вместо того, чтобы оставить его в качестве HTTPS страница https://mysite.com/MyApp/secret.html. Это не только конфиденциальный вход, но и данные, которые передаются, поэтому мне нужно сохранить HTTPS. Когда я добавляю к безопасности-контрсилам приложения

<user-data-constraint> 
    <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
</user-data-constraint> 

перенаправляет к https://mysite.com:8443/MyApp/secret.html. Я понимаю, что он перенаправляется на 8443, потому что server.xml имеет SSL, настроенный на 8443, но поскольку это проксировано через Apache, оно должно быть на самом деле должно быть 443.

Я понимаю, что у меня нет ProxyPassReverse, но это не то, что я могу добавить в разделе конфигурационного файла Apache

Как заставить j_security_check либо перенаправить относительный (так что не менять https на http), либо перенаправить на 443 вместо 8443? Это что-то, что я должен применять с помощью Tomcat или mod_proxy от Apache?

Приветствия

Nik

ответ

1

Вы не можете рассчитывать на Tomcat, чтобы сделать переадресацию ССЛ для установки. Вам нужно написать фильтр, чтобы сделать перенаправление самостоятельно.

Для конкретной установки, он может работать, если вы добавите redirectPort как это,

<Connector ... port="8080" redirectPort="443"/> 

Пожалуйста, удалите разъем HTTPS. Это может смутить некоторую версию Tomcat, когда у вас есть как redirectPort, так и HTTPS-коннектор. Похоже, вы не хотите, чтобы люди все равно получали доступ к вашему HTTPS-порту.

Это работает только тогда, когда у вас есть Apache и Tomcat на той же машине. В производственной среде это может быть не так.

+0

Спасибо, я посмотрю фильтры :-) – niklassaers