1

私の目標は、サーバーがクライアント証明書を要求するように要求することで、テスト サーバーのセキュリティを強化することです。

Tomcat server.xml (conf/server.xml) には以下が含まれます。

<Connector
       protocol="org.apache.coyote.http11.Http11NioProtocol"
       scheme="https" secure="true" SSLEnabled="true"
       port="443"
       clientAuth="true"
       keyAlias="posh"
       maxThreads="200" acceptCount="100"
       minSpareThreads="5" maxSpareThreads="75"
       keystoreFile="conf/keystore.jks"
       keystoreType="JKS" keystorePass="somePassword"
       enableLookups="true" disableUploadTimeout="true"
       truststoreFile="conf/keystore.jks"
       truststoreType="JKS" truststorePass="somePassword"
       SSLVerifyClient="require" SSLEngine="on" SSLVerifyDepth="2"
       sslProtocol="TLS"/>

Tomcat web.xml (conf/web.xml) には以下が含まれます。

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
  version="3.1">
...
<user-data-constraint>
  <transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
<security-constraint>
    <web-resource-collection>
        <web-resource-name>Everything</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>
<login-config>
    <auth-method>CLIENT-CERT</auth-method>
</login-config>
...
</web-app>

カタリナ ログにエラーは表示されません。

... 2016 年 1 月 26 日 15:29:59.023 情報 [メイン] org.apache.coyote.AbstractProtocol.start ProtocolHandler の開始 ["http-nio-8080"] 2016 年 1 月 26 日 15:29:59.420 情報 [メイン] org.apache.coyote.AbstractProtocol.start ProtocolHandler ["http-nio-443"] 26-Jan-2016 15:29:59.421 INFO [メイン] org.apache.coyote.AbstractProtocol.start 開始 ProtocolHandler ["ajp- nio-8009"] 26-Jan-2016 15:29:59.422 INFO [main] org.apache.catalina.startup.Catalina.start サーバーが 24056 ミリ秒で起動

この時点でこれが問題になるかどうかはわかりませんが、conf/keystore.jks から次のリストが得られます。

root@Posh:/opt/tomcat/conf# keytool -list -keystore keystore.jks -storepass somePassword

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 2 entries

posh, Jan 26, 2016, PrivateKeyEntry, 
Certificate fingerprint (SHA1): 0F:DA:1D:B3:5C:37:60:D0:46:8B:7C:DE:F3:96:2E:DE:A2:4E:2F:B5
clientcert, Jan 26, 2016, trustedCertEntry, 
Certificate fingerprint (SHA1): 42:16:28:7E:17:2D:6C:B4:61:F4:8D:DA:B7:6E:90:E4:9F:3E:FC:83

それ以外の場合、私のTomcat 8構成は、authbind()の下でUbuntu 14.04のtomcatユーザーとして実行されています。

サイトに接続するクライアントは、サーバー証明書を受け入れ、クライアント証明書なしで展開されたすべてのアプリケーションに自由にアクセスできます。

アプリケーションへのアクセスを許可する前に、Tomcat がすべてのクライアントからクライアント証明書を「要求」することを期待していました。

サイト上の任意/すべてのアプリケーションにアクセスするためにクライアント証明書を要求/要求するように構成を変更するにはどうすればよいですか?

4

0 に答える 0