2010-05-13 3 views
4

У меня есть конечная точка веб-сервиса и соединитель http на порту X. В какой-то момент этой конечной точке нужно переключиться на https, но на том же порту! (Я знаю, что это не обычный способ делать что-то, но это то, что мои клиенты ожидают от старого сервера, который они используют ...)Tomcat Http и Https на том же порту

Есть ли способ сделать это в tomcat?

+1

Время, чтобы получить нового клиента! У них есть причина для этого, или это просто случай «так мы всегда это делали»? –

ответ

-1

Вам не нужно запускать HTTP & HTTPS на том же порту, настроить Tomcat на перенаправление запросов на HTTPS в файле server.xml.

5

Это невозможно с Tomcat. Коннектор HTTPS будет принимать только соединение SSL.

У нас есть такой прокси-сервер, разработанный в доме. Это не так сложно. Вам просто нужно проверить первый входящий пакет. Поиск шаблона SSL-подтверждения. Мы только ищем CLIENT_HELLO. Как только вы выясните протокол, вы можете перенаправить запрос соответствующим образом.

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

-1

хорошо, я удивляюсь, почему они НЕ находятся на одном и том же порту! не будет ли это проще?

Причина, вероятно, в том, что связанная Java APIS (javax.net.ssl) не позволяет этого; у вас должны быть разные серверные сокеты. существуют ли какие-либо альтернативы SSL для Java? Я ничего не знаю.

0

Существует такая вещь, как обновление HTTPS, при этом HTTP-соединение с открытым текстом обновляется до HTTP по взаимному согласию после его создания. Это то, что вы имели ввиду? Если это так, Tomcat, похоже, не поддерживает его из коробки, и Java тоже не работает. Вы, вероятно, можете написать себе Tomcat Connector, который сделает это; на стороне клиента у вас есть более интересная проблема ;-)

Но я бы спросил, почему? Порты не так дороги, что вы не можете использовать два.

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