6.5.5. クライアント証明書ルックアップ

HTTP リクエストが Red Hat Single Sign-On サーバーに直接送信されると、JBoss EAP undertow サブシステムは SSL ハンドシェイクを確立し、クライアント証明書を展開します。その後、クライアント証明書はサーブレット仕様で指定されるように HTTP リクエストの javax.servlet.request.X509Certificate 属性に保存されます。Red Hat Single Sign-On X509 オーセンティケーターは、この属性から証明書をルックアップできます。

ただし、Red Hat Single Sign-On サーバーがロードバランサーまたはリバースプロキシーの背後で HTTP 要求をリッスンする場合は、クライアント証明書を抽出し、相互 SSL 接続を確立するプロキシーサーバーである可能性があります。リバースプロキシーは通常、認証されたクライアント証明書を基盤のリクエストの HTTP ヘッダーに配置し、バックエンド Red Hat Single Sign-On サーバーに転送します。この場合、Undertow に対するため、Red Hat Single Sign-On は、HTTP リクエストの属性ではなく、HTTP ヘッダーから X.509 証明書チェーンを検索できる必要があります。

Red Hat Single Sign-On がリバースプロキシーの背後にある場合は、通常 RHSSO_HOME/standalone/configuration/standalone.xml で x509cert-lookup SPI の代替プロバイダーを設定する必要があります。HTTP ヘッダーから証明書を検索する default プロバイダーとともに、haproxyapache の 2 つの組み込みプロバイダーもあります。これについては、以下で説明します。

6.5.5.1. HAProxy 証明書ルックアッププロバイダー

Red Hat Single Sign-On サーバーが HAProxy リバースプロキシーの背後に配置されると、このプロバイダーを使用できます。以下のようにサーバーを設定します。

<spi name="x509cert-lookup">
    <default-provider>haproxy</default-provider>
    <provider name="haproxy" enabled="true">
        <properties>
            <property name="sslClientCert" value="SSL_CLIENT_CERT"/>
            <property name="sslCertChainPrefix" value="CERT_CHAIN"/>
            <property name="certificateChainLength" value="10"/>
        </properties>
    </provider>
</spi>

この設定例では、クライアント証明書が HTTP ヘッダー、SSL_CLIENT_CERT、およびチェーンからの他の証明書が CERT_CHAIN_0CERT_CHAIN_1CERT_CHAIN_9 などの HTTP ヘッダーから検索されます。certificateChainLength はチェーンの最大長であるため、最後の試行属性は CERT_CHAIN_9 になります。

クライアント証明書およびクライアント証明書チェーンの HTTP ヘッダーとそれらの適切な名前を設定する方法の詳細は、HAProxy ドキュメントを参照してください。