2

注:私は自分の質問に答えます...インターネットの集合的な知恵にこの一口を追加したかっただけです。

主にこのページ( http://docs.jboss.org/jbossas/jboss4guide/r1/html/ch8.chapter)の情報を利用して、JBoss5.1.0.GAサーバーで証明書認証を正常に設定しました。 html

/openContext認証を必要としない1つのコンテキスト(それを呼び出しましょう/securedContext)と、クライアント証明書認証を必要とする別のコンテキスト(つまり、web.xmlでCLIENT-CERTを使用するように構成されている)があります。JBossのデフォルトのWebコネクタを使用する場合、これは見事に機能します。ヒットすることはできますがhttp://myhost/openContext、証明書の入力を求められませんが、http://myhost/securedContextを押すと、期待どおりにクライアント証明書の入力を求められます。

ただし、JBossWeb NativeをインストールしてAPRをWebコネクタとして使用すると、を押しても証明書の入力を求められなくなりhttp://myhost/securedContextます。

のAPRコネクタ構成はserver.xml次のようになります。

<Connector protocol="HTTP/1.1" SSLEnabled="true"
    port="8443" address="${jboss.bind.address}"
    scheme="https" secure="true" clientAuth="false"
    SSLProtocol="SSLv3+TLSv1"
    SSLCipherSuite="ALL:!ADH:!SSLv2:!EXPORT40:!EXP:!LOW"
    SSLRandomSeed="/dev/urandom"
    SSLCertificateFile="/etc/pki/tls/certs/mycert.crt"
    SSLCertificateKeyFile="/etc/pki/tls/private/mycert.key"
    SSLPassword="mypasswordwhichiassureyouisbetterthanthisone"
    SSLCACertificateFile="/etc/pki/tls/certs/clientCAs.crt"
/>

また、その構成にパラメーターを追加してをに設定しようとしましたSSLVerifyClientが、とoptionalの両方/openContextで証明書の入力を求められ/securedContextます。これは、私が望む動作ではありません。

あるWebコンテキストに対して証明書認証を要求するが別のWebコンテキストに対しては証明書認証を要求しないようにAPRを使用してJBossを取得するにはどうすればよいですか?

4

1 に答える 1

3

私にとってうまくいったのは、まったく新しい Web コネクタを追加し、クライアントがセキュリティで保護された Web コンテキストにその代替ポートを使用するようにすることでした。私のコネクタ設定は次のようになります。

<Connector protocol="HTTP/1.1" SSLEnabled="true"
    port="8443" address="${jboss.bind.address}"
    scheme="https" secure="true" clientAuth="false"
    SSLProtocol="SSLv3+TLSv1"
    SSLCipherSuite="ALL:!ADH:!SSLv2:!EXPORT40:!EXP:!LOW"
    SSLRandomSeed="/dev/urandom"
    SSLCertificateFile="/etc/pki/tls/certs/mycert.crt"
    SSLCertificateKeyFile="/etc/pki/tls/private/mycert.key"
    SSLPassword="mypasswordwhichiassureyouisbetterthanthisone"
/>
<Connector protocol="HTTP/1.1" SSLEnabled="true"
    port="8543" address="${jboss.bind.address}"
    scheme="https" secure="true" clientAuth="true"
    SSLProtocol="SSLv3+TLSv1"
    SSLCipherSuite="ALL:!ADH:!SSLv2:!EXPORT40:!EXP:!LOW"
    SSLRandomSeed="/dev/urandom"
    SSLCertificateFile="/etc/pki/tls/certs/mycert.crt"
    SSLCertificateKeyFile="/etc/pki/tls/private/mycert.key"
    SSLPassword="mypasswordwhichiassureyouisbetterthanthisone"
    SSLCACertificateFile="/etc/pki/tls/certs/clientCAs.crt"
    SSLVerifyClient="require"
/>

ここで、 をhttp://myhost:8443/openContextクリックしても証明書の入力を求めるプロンプトは表示されませんが、 を押すとhttp://myhost:8543/securedContext証明書の入力を求めるプロンプトが表示されます。もちろん、「間違った」ポートを使用してどちらの Web アプリにもアクセスできますが、結果は私の目的では無視できます。クライアントが にヒットした場合、http://myhost:8443/securedContext単に HTTP 認証エラーが発生します。クライアントがヒットhttp://myhost:8543/openContextすると、クライアント証明書の入力を求められます。彼らがそれを提供した場合は素晴らしい (あなたが誰であるかは気にしませんが)、提供していないか無効なものを提供した場合は、HTTP 認証エラーが発生します (そもそも正しいポートを使用する必要がありました)。 )。

JBoss の前に httpd を配置し、そこで巧妙な構成を行うことにより、2 番目のコネクタを必要とせずにこれを機能させる別の方法があると確信していますが、これは私の目的には十分に機能しました。

于 2011-10-31T15:00:16.463 に答える