JerseyでWebサービスを呼び出すときにクライアント証明書を使用してTomcatを認証するwebappを開発しています。これまでのところうまくいっていますが、私はこのアプリケーションを管理するのと同じコンテキストでWebフロントエンドが必要です。 SSL設定は「コンテキストごと」であるため、フロントエンドでhttpsを使用する唯一のオプションは、クラウドストアにクライアント証明書をインストールしているようです(Tomcatのトラストストアにもリストされています(httpsの使用をすべて破棄するか、 。TomcatのURLに基づいて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に接続することはできません - ルックアップか何か中に失敗しているようです。しかし8080でHTTPコネクタを作成すると、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>
[...]
Thanks EJP、私はあなたのソリューションを試しましたが、私はTomcatにもう接続できません(証明書を使用するかどうかは関係ありません)。私は上記の試みを掲示しました - あなたは間違いを見つけられますか? – EddyYosso