Я разрабатываю веб-приложение, которое использует клиентские сертификаты для аутентификации в Tomcat во время вызовов веб-службы с Джерси.Пока это прекрасно работает, но мне нужен веб-интерфейс в том же контексте, который позволит мне администрировать это приложение.Поскольку конфигурация SSL «для контекста», единственной возможностью использовать внешний интерфейс https является установка клиентского сертификата в браузер, который обращается к нему, который также указан в хранилище доверенных сертификатов tomcat (либо вообще не учитывает использование https).
Чтобы проиллюстрировать, что я действительно хочу:
1. https://url-to-webapp/ws <- Should use client certificate
2. https://url-to-webapp/web <- Should just use a server certificate
Может ли это быть достигнуто каким-либо образом в конфигурации Tomcat или даже в коде приложения?
Обновление
Я попробовал конфигурацию, предложенную EJP, но теперь я не могу подключиться к Tomcat независимо от того, как я использую сертификаты - похоже, он не работает во время поиска или что-то в этом роде.Если я создаю HTTP-коннектор на 8080, он перенаправляет меня на 8443. Это конфигурация, которую я использую.Есть идеи?
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>
[...]