Я настроил экземпляр Tomcat, следуя этой статье: http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html. Я закомментировал HTTP-коннектор, потому что я хочу, чтобы мое демонстрационное приложение было доступно только через HTTPS. Я настроил HTTPS-разъем следующим образом:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystorePass="nopass"
keystoreFile="/home/someuser/.keystore" keyAlias="tomcat" />
Все работает нормально, когда я нажимаю URL-адрес сервлета моего демонстрационного приложения, используя HTTPS.
Когда я попытался поразить его с помощью HTTP-URL, я ожидал, что он вернет 403 или похожую ошибку Вместо этого я получил загрузку небольшого (11 байт?) Двоичного файла с именем, совпадающим с именем сервлета.
Кто-нибудь сталкивался с подобной проблемой? Как вы решили это? Что я должен проверить, чтобы убедиться, что я все сделал правильно?
РЕДАКТИРОВАТЬ: Я попытался подключиться к тому же разъему, используя curl вместо браузера, и заметил, что он не возвращает никаких заголовков. Да, и размер ответа составляет 7 байтов, а не 11.
РЕДАКТИРОВАТЬ 2: Это часть, связанная с безопасностью файла web.xml моего демонстрационного приложения:
<security-constraint>
<web-resource-collection>
<web-resource-name>Secure Servlet</web-resource-name>
<url-pattern>/SecureServlet</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
<auth-constraint>
<role-name>connect</role-name>
</auth-constraint>
</security-constraint>
<security-role>
<description>The role required to connect to the application
</description>
<role-name>connect</role-name>
</security-role>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>