[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[upki-fed:00346] IdP 2.3.0アップデート情報まとめその 1 (ひとまず今の環境をアップデートするために)



西村です。

Shibboleth IdP 2.2.1およびそれ以前に脆弱性が発見されましたが、
http://shibboleth.internet2.edu/secadv/secadv_20110516.txt
この影響を受けないIdP 2.3.0へのアップデート方法およびアップデートに際しての注意点を
まとめましたのでご参照ください。
かなりメモ書き状態で清書されておりませんがご了承ください。
不明な点がありましたらご質問ください。


※Linux版2.1.5からのアップデートを前提としておりますが、他のバージョンでも基本的には同じです。
 また、学認技術ガイドに従ってApache + Tomcatを対象としています。

2.3.0(2.2.0以降)の新機能や主な修正点:
* 新機能: IdP-initiated SSO
 /idp/profile/SAML2/Unsolicited/SSO?providerId=…
 https://wiki.shibboleth.net/confluence/display/SHIB2/IdPUnsolicitedSSO
* その他、ECP対応, ExternalAuthnなど
* IdP 2.1.5はバグによりidp-audit.logにtransient IDが残りません。2.2.0で直っています。
 "SAML name identifier value not logged in audit log"
 https://bugs.internet2.edu/jira/browse/SIDP-415
* ログの各行に idpSessionId/JSESSIONID/clientIP を出力できるようになりました

IdP 2.3.0へのアップデート手順:
1. ZIP取得 http://www.shibboleth.net/downloads/identity-provider/latest/shibboleth-identityprovider-2.3.0-bin.zip
  SHA-1ハッシュ値
  905420b76c558894d42ec1ee89101978366414bf  shibboleth-identityprovider-2.3.0-bin.zip
2. 適当なディレクトリにZIP展開
3. Tomcat停止
4. /opt/shibboleth-idp/conf/のバックアップを取る
  ついでにmetadata/idp-metadata.xml、もし参照していればcredentials/idp.{crt,key,jks}も
5. /opt/shibboleth-idp/lib/に独自のライブラリが入ってないかチェックする
  あれば2で展開したディレクトリのlib/に入れる
6. idp.war中のlogin.jspやweb.xmlを改変していればそれも退避させる
  login.jspについては2で展開したディレクトリのsrc/main/webapp/login.jspを(差分を確認した
  上で)置き換え、
  web.xmlについてはsrc/main/webapp/WEB-INF/web.xmlとの差分を確認した上で
  /opt/shibboleth-idp/conf/に置いておく
7. 2で展開したディレクトリのinstall.shを実行する
8. The directory '/opt/shibboleth-idp' already exists.  Would you like to overwrite this Shibboleth configuration? (yes, [no])
  と聞かれたら、noを選択する。後で設定ファイルのバックアップから戻すつもりであれば
  この限りではない。
9. idp.warの配置 → /usr/java/tomcat/webapps/
10. /usr/java/tomcat/endorsed/ディレクトリの更新
   2.1.5では以下のファイルが配置されているはず
     resolver-2.9.1.jar
     serializer-2.9.1.jar
     xalan-2.7.1.jar
     xercesImpl-2.9.1.jar
     xml-apis-2.9.1.jar
   これらを消して新しいので入れ替え(注1)
11. Tomcat起動

本家最新マニュアルではバックチャンネルにshibboleth-jce-1.1.0.jarを使わずに
tomcat6-dta-ssl-1.0.0.jarを使うようになっているようですが、
https://wiki.shibboleth.net/confluence/display/SHIB2/IdPApacheTomcatPrepare#IdPApacheTomcatPrepare-SupportingSOAPEndpoints
ひとまず検証環境では上記の手順で2.3.0が動きました。

注1:
endorsed/にて、serializerが2.9.1から2.7.1にバージョンダウンしているように見えるが
気にしないで2.7.1を使うこと。
https://lists.internet2.edu/sympa/arc/shibboleth-users/2011-05/msg00382.html


注意点:
- サポート環境がApache Tomcat 6.0.17もしくはそれ以上に上がっています
- logging.xmlにて、ログレベルをTRACE以下(つまりTRACEかALL)にしているとAttributeFilter
 でNullPointerExceptionが発生する場合があるので、DEBUGもしくはそれ以上にする。
 (2.3.1で修正予定)
 https://issues.shibboleth.net/jira/browse/SC-154
- login.configで特殊なパラメータを設定している場合、以下のような変更を加えないと
 当該パラメータが認識されないという報告もあるようです。
 login.config
   ldapUrl="ldap://localhost" <- host
   baseDn="o=test_o,dc=ac,c=JP" <- base
   userFilter="uid={0}" <- userField
   https://wiki.shibboleth.net/confluence/display/SHIB2/IdPAuthUserPass
   LDAP DataConnectorのほうに変更はありません。
- logging.xmlの%mdcでprincipalNameを出力できなくなりました
 https://wiki.shibboleth.net/confluence/display/SHIB2/IdPLogging
- relying-party.xmlのSAML2SSOProfileのlocalityAddressにバグがあるようです。
 localityAddressを設定しても上書きされないとの報告があります。
 localityAddressを設定していない場合には影響ありません。
- version.shを実行するとエラーになります
 $ /opt/shibboleth-idp213/bin/version.sh 
 Exception in thread "main" java.lang.ExceptionInInitializerError
 Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
 	at edu.internet2.middleware.shibboleth.idp.Version.<clinit>(Version.java:101)
 Could not find the main class: edu.internet2.middleware.shibboleth.idp.Version.  Program will exit.
 バグはすでに登録されているようです。
 https://issues.shibboleth.net/jira/browse/SIDP-492

関連URL:
https://wiki.shibboleth.net/confluence/display/SHIB2/IdP22Upgrade
※IdP23Upgradeはまだない(2011-06-17時点)
https://wiki.shibboleth.net/confluence/display/SHIB2/IdP2Upgrade
https://wiki.shibboleth.net/confluence/display/SHIB2/IdPApacheTomcatPrepare

-- 
西村健
国立情報学研究所 TEL:03-4212-2720