Typically when you install Tomcat, you also install the Tomcat-Admin Web Applications – manager and host-manager. These Admin Web Applications enable you to manage your own Web Applications that you are hosting on the Tomcat.
In most cases your own Web Application will allow only one of either HTTP, or HTTPS (SSL / TLS) access. However, in some cases you may need your own Web Application to allow both, i.e., some URLs can be accessed by either of HTTP or HTTPS, while some URLs can be accessed only via HTTPS.
In this case you will enable both the HTTP Connector and the HTTPS Connector, in the server.xml file in /etc/tomcat7/ or /var/lib/tomcat7/conf/. The complete configuration for this is explained in another post – Configure HTTP Access for some URLs and HTTPS Access for other URLs on Tomcat 7
An unintentional side-effect of this is that Tomcat will now also allow HTTP access to the Admin Web Applications. This could be a security risk (depending on your environment) and you may want to setup the Admin Web Applications to be accessible via HTTPS only.
In order to do this, follow these steps.
NOTE: These steps were tested on Tomcat 7 running on an Ubuntu Linux 14.04 LTS instance on AWS EC2. However, the steps below should work on any Tomcat 7 instance on any OS (after adjusting for installation directory locations).
- These Admin Web Applications are deployed as part of the
tomcat-adminmodule (onUbuntu Linux) and hence their configuration is separate from your own Web Applications deployed on theTomcatinstance - The apps are deployed in the directory
/usr/share/tomcat7-admin/ - Update the
web.xmlfile in/usr/share/tomcat7-admin/manager/WEB-INF/- Particularly update the
<security-constraint>section - Add a
security-constraint
- Particularly update the
<security-constraint>
<web-resource-collection>
<web-resource-name>HTTPS Only</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
- Update each of the other existing
security-constraintsby adding the following at their ends
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
- Similarly update the
web.xmlfile in/usr/share/tomcat7-admin/host-manager/WEB-INF/ - Now restart your
Tomcat 7instancesudo service tomcat7 restart
- The Admin Web Applications will now be accessible via
HTTPSonly