私は、B2BであるWebサービスのSSL接続をセットアップしようとしており、サーバー上でクライアント認証を行う必要があります。サーバーは一般ユーザーからもブラウザ経由でアクセスできるURLをホストするため、ホストへのすべての接続でクライアント認証が必要なわけではありません。特定のURLのみが、client-authが発信者のX509証明書を検証する必要があります。あなたは私たちが署名証明書およびIを提供することができますので、私は、キーストアを設定している見ることができるようにJavaアプリケーションサーバー用のカスタムSSL TrustManager
<Connector protocol="HTTP/1.1" SSLEnabled="true"
port="8443" address="${jboss.bind.address}" sslProtocol = "TLS"
scheme="https" secure="true" enableLookups="true" clientAuth="false"
keystoreFile="${jboss.server.home.dir}/conf/.myKeyStore"
keystorePass="password1" />
:私たちは、私はそうのようなコネクタ構成を持つようにTomcat 5.xのに基づいているのJBoss 5.xのを、使用していますクライアント認証を必要とする特定のURLなどCLIENTAUTH = falseがそうのように、web.xmlで設定されますしている:私は実際にこれがまた私の上にコネクタの設定でのIF仕事を得ることができ、カスタムJAASログインモジュールを介して
<security-constraint>
<web-resource-collection>
<web-resource-name>clientAuthResources</web-resource-name>
<url-pattern>/clientauth/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>authOnly</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>
<auth-method>CLIENT-CERT</auth-method>
<realm-name>myRealm</realm-name>
</login-config>
<security-role>
<role-name>authOnly</role-name>
</security-role>
クライアント証明書を持つ特定のトラストストア。それが私の問題です。私たちのアプリケーションのセットアップと規模の拡大を考えると、各jbossアプリケーションサーバーのセットアップでは、ユーザーの特定の構成がサポートされており、ファイルシステム上のすべての場所にトラストストアを構成する必要はありません。信頼できる証明書をデータベースからコードに動的にロードする必要があります。カスタムJAASログイン・モジュールは、Webレベルでこれを行い、ロールも割り当てますが、コネクターのトラストストアを使用しないと、ログイン・モジュールが呼び出されることはありません.HTTP取得前にSSLレベルで接続が終了します。
ウェブに関する多くの調査の後、SSLContext/SSLSocketFactoryで設定されたカスタムX509TrustManagerが必要になると判断しました。このカスタムトラストマネージャは、データベースに保存されている証明書を検証します。私はこのカスタムトラストマネージャを作成しましたが、私はそれを引き付けることはできません。誰でもjbossやtomcat 5.xでこれを設定する方法を知っていますか?私はTomcat 7で、次の設定がconnector、trustManagerClassNameで利用可能であることに気付きましたが、それは私のオプションではありません。私は可能であると仮定し、どんな助けも大いに感謝します。