Я пытаюсь установить соединение с http://localhost:8443
к https://localhost:8443
. Сайт работает правильно, если они переходят на https://localhost:8443
. Если пользователь забыл s в https я бы хотел, чтобы tomcat поправил их.
У меня есть только один соединитель для https, определяемый как:
<Connector port="8443" rediretPort="8443"
protocol="HTTP/1.1"
connectionTimeout="20000"
SSLEnabled="true"
maxThreads="150"
scheme="https"
secure="true"
clientAuth="false"
sslProtocol="TLS"
keyAlias="alias"
keystoreFile="keystore.jks"
keypass="PASSWORD"
/>
Это на сервере Windows. Tomcat 6 - это автономный сервер (не подключенный к IIS).
Я попытался изменить web.xml, включив в него следующее:
<security-constraint>
<web-resource-collection>
<web-resource-name>Protected Context</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
У меня это не работает. Из того, что я прочитал, это перенаправит пользователя из http://localhost:8080
к https://localhost:8443
(если соединитель 8080 определил redirectPort как 8443).
Я не уверен, что это возможно даже с автономным сервером Tomcat. Я знаю, что это возможно с помощью apache mod_rewrite или другого аналогичного решения, но я не хочу устанавливать какие-либо другие службы на машине Windows.
если ваше первое предложение не является опечаткой, просто добавьте соединитель для http на порт 8080 и добавьте перенаправление, как вы описали. вы не можете прослушивать http и https на одном и том же порту. поэтому позвольте http прослушивать порт 8080 и https на порту 8443.