...
ノード1およびノード2で、上記entityIDでサービスするShibboleth IdP(2.3.6)を構築する。鍵および証明書は同一のものを用い、メタデータは上記entityIDを学認メタデータテンプレートに当てはめた標準的なもの(独自ホスト名を含まない)とする。を構築する。Shibbolethで用いる鍵および証明書は同一のものを用い、メタデータは上記entityIDを学認メタデータテンプレートに当てはめた標準的なもの(独自ホスト名を含まない)とする。
また、stateless clustering方式もしくはmemcached方式でクラスタ構成としておくこと。
各ノードのサーバ証明書には、2つのホスト名(共通名各ノードのHTTPサーバが用いるサーバ証明書には、2つのホスト名(共通名(idp.example.ac.jp)とノード毎の名前(N.idp.example.ac.jp))をsubjectAltNameに記載した1枚の証明書を使うと良い。ただし携帯電話でアクセスする可能性がある場合は別々の証明書(つまり、ホスト名1つが1つの証明書に対応するようにする)とするのがよい(携帯電話のブラウザの中には、証明書のCNしか見ない実装があるため)。)をsubjectAltNameに記載した1枚の証明書を使うと良い。ただし携帯電話でアクセスする可能性がある場合は別々の証明書とする(つまり、ホスト名1つが1つの証明書に対応するようにする)のがよい(携帯電話のブラウザの中には、証明書のCNしか見ない実装があるため)。
それぞれのホスト名で別々の証明書を使う場合は、Name-based virtual hostでなくIP-based virtual hostを使うこと。hostを使うこと。(SNI非対応ブラウザのことを考慮して)
3. 設定
各ノードで以下の設定を行う。
- /usr/java/tomcat/webapps/idp/WEB-INF/web.xml
のcookieDomainがコメントアウトされている行を探し、コメントアウトを解除した上で以下のように修正する。コード ブロック language xml <!-- --> <context-param> <param-name>cookieDomain</param-name> <param-value>.idp.example.ac.jp</param-value> </context-param> <!-- -->
- /etc/httpd/conf.d/ssl.conf
を以下のように修正する。パネル ServerName 1.idp.example.ac.jp:443 ← 当該ノードの独自ホスト名を記述
UseCanonicalName On ← Onにしていない場合は追加...
ProxyPass /idp ajp://localhost:8009/idp
ProxyPassReverse /idp/ https://idp.example.ac.jp:443/idp/ ← ProxyPassの行の後に追加 - (オプショナル、Tomcat 6.0.27未満の場合効果なし)
/usr/java/tomcat/conf/Catalina/localhost/idp.xml
に以下の内容のファイルを作成する。
JSESSIONIDの後にはノード番号(1もしくは2)を記述すること。もしすでにidp.xmlが存在する場合は、sessionCookieNameおよびsessionCookieDomainを追加する。パネル <Context sessionCookieName="JSESSIONID1" sessionCookieDomain=".idp.example.ac.jp" />
...