Estoy desarrollando una aplicación web que usa certificados de cliente para autenticarse contra Tomcat durante las llamadas al servicio web con Jersey. Esto funciona muy bien hasta ahora, pero necesito una interfaz web en el mismo contexto que me permita administrar esta aplicación. Dado que la configuración SSL es "por contexto", la única opción para que el frontend use https parece ser la instalación de un certificado de cliente para el navegador que accede, que también aparece en el archivo truststore de tomcat (o descartando el uso de https). .Configurar el uso del certificado HTTPS basado en url en Tomcat
Para ilustrar lo que realmente quiero:
1. https://url-to-webapp/ws <- Should use client certificate
2. https://url-to-webapp/web <- Should just use a server certificate
se puede lograr esto de alguna manera en la configuración de Tomcat, o incluso en el código de la aplicación?
actualización
Probé la configuración sugerida por EJP pero ahora no puede conectarse a Tomcat independientemente de mi uso de certificados - parece fallar durante las operaciones de búsqueda o algo así. Sin embargo, si creo un conector HTTP en 8080, me redirige a 8443. Esta es la configuración que estoy usando. ¿Algunas ideas?
tomcat-users.xml
<tomcat-users>
<role rolename="webservice"/>
<user username="CN=ClientCert,OU=Corp,O=Corp,L=London,S=London,C=UK" password="" roles="webservice"/>
</tomcat-users>
server.xml
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="true" sslProtocol="TLS"
keystoreFile="c:\tomcat\keys\server.jks" keystorePass="password"
truststoreFile="c:\tomcat\keys\client.jks" truststorePass="password"/>
web.xml
[...]
<security-constraint>
<display-name>ClientCertificateRequired</display-name>
<web-resource-collection>
<web-resource-name>MyWebService</web-resource-name>
<description/>
<url-pattern>/webservice/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<description/>
<role-name>webservice</role-name>
</auth-constraint>
<user-data-constraint>
<description/>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>
<auth-method>CLIENT-CERT</auth-method>
<realm-name>tomcat-users</realm-name>
</login-config>
<security-role>
<description/>
<role-name>webservice</role-name>
</security-role>
[...]
<servlet>
<display-name>Webservice</display-name>
<servlet-name>Webservice</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
[...]
<run-as>
<role-name>webservice</role-name>
</run-as>
</servlet>
[...]
Gracias EJP, probé su solución pero ahora no puedo conectarme a Tomcat (no importa si uso certificados o no). Publiqué mis intentos anteriores: ¿puedes detectar un error? – EddyYosso