子ページ
  • SPv3アップデートに関する情報

比較バージョン

キー

  • この行は追加されました。
  • この行は削除されました。
  • 書式設定が変更されました。
ヒント
Shibboleth IdPのアップデートに関してはこちらをご覧ください。⇒IdPv4アップデートに関する情報
ヒント

SP 2.5.xおよびそれ以前からアップデートする場合はこちらの情報もご覧ください。⇒SPバージョン2アップデートに関する情報

注意

以前の本手順でSPv2からSPv3にアップデートして以降、/var/log/messages にmod_shibのログが出力されなくなっている場合は、/etc/shibboleth/native.logger を同ディレクトリの native.logger.dist と比較し、必要な修正を適用してください。
出力されるべきmod_shibのログは以下のようなフォーマットです:

書式設定済み
Nov 10 22:37:54 localhost shobboleth: ...


目次
maxLevel4

バージョン共通

CentOS等、yumコマンドによりインストールした環境では以下のコマンドで簡単に最新版にアップデートできます。CentOS等、yum/dnfコマンドによりインストールした環境では以下のコマンドで簡単に最新版にアップデートできます。

コード ブロック
$ sudo yum update

...

コード ブロック
$ sudo yum update shibboleth libsaml9libsaml12 libxmltooling7libxmltooling10 libxml-security-c17c20 liblog4shib1liblog4shib2 opensaml-schemas xmltooling-schemas libxerces-c-3_12 libcurl-openssl xerces-c
(OSによっては libcurl-openssl パッケージや libxerces-c-3_1 パッケージが存在しない場合がありますが、無視されますので問題ありません)

アップデート後、httpdおよびshibdが再起動されていることを確認し、再起動されていなければ手動で再起動してください。

$ sudo
systemctl restart shibd
$ sudo systemctl restart httpd
コード ブロック
$ sudo /sbin/service shibd restart
$ sudo /sbin/service httpd restart
情報

CentOS 7の場合コマンドが異なります。自動再起動されていない場合は以下のコマンドを用いてください。

コード ブロック

※ 例えば、2.6.0から21から3.60.1へのアップデートは自動的に再起動する模様。21へのアップデートは自動的に再起動する模様。3.6.1にアップデート後、libxmltooling7のみをアップデートした場合は再起動されない模様。2.5.1から2.5.2へのアップデートはhttpdおよびshibdを自動的に再起動する模様。2.4.3から2.5.2へのアップデートでは再起動されない模様。

注意点

RPMパッケージのミラーリングがおかしい場合はこちらをご参照ください。
2016-11-30 [upki-fed:01103] 【続報】Shibboleth SPパッケージ配布リポジトリの不具合について

0.1にアップデート後、libxmltooling8のみをアップデートした場合は自動再起動されない模様。

注意点

すでにNIIオープンフォーラム等でアナウンスしておりますが、Shibboleth開発元におけるメンテナンス持続性のため、Shibboleth SP次期バージョンはJavaで再実装する方向でリデザインが進行しており、リリース目処は2024もしくは2025年となっております。次期バージョンリリースまでは現行バージョンがメンテナンスされますが、それ以降も運用を続けるには大きな改修が必要になる可能性があります(利用している機能によっては提供されなくなる可能性もあります)ので予めご了承ください。

RPMパッケージ情報が取得できない場合は、本ページ末尾の説明を参照して新しいリポジトリを利用するよう設定ファイルを更新してください。

デフォルトでは有効になっていない、オープンリダイレクタとならないための設定があります。特に事情がなければ以下の指示に従って設定を有効にしてください。2.5.0以降の機能ですが、デフォルトでは有効になっていない、オープンリダイレクタとならないための設定があります。特に事情がなければ以下の指示に従って設定を有効にしてください。
オープンリダイレクタとなりうる問題の対処

Shibbolethプロダクトに関する次節以降記載以外のセキュリティフィックスおよび脆弱性情報は以下のページにてご覧いただけます。
⇒ Shibboleth Wiki: SecurityAdvisories

Apache httpd 2.4へ移行する場合の注意点

OSのバージョンアップ等でApache httpd 2.2およびそれ以前の環境からApache httpd 2.4の環境へ移行する場合の、Shibboleth SP周りの設定ファイルに関する注意事項です。

Apache httpd 2.2およびそれ以前からApache httpd 2.4へ移行する場合、設定ファイルの ShibCompatWith24 の行はコメントアウトもしくは削除してください。
2016-12-08 [upki-fed:01115] Re: Proxy配下でのSP構築に関してまた、

require valid-user など、許容される構文もしくはその意味が変わっておりますので、昔の設定を引き継いで使っている方はご注意ください。
⇒ Shibboleth Wiki: Apache Compatibility Changes, NativeSPApacheConfig, NativeSPhtaccess Apache, htaccess
特に、以前の意味での"require valid-user"の使用は避け、"require shib-session"もしくは"require shib-user ..."で置き換えてください。BASIC認証等との組み合わせで問題が発生する場合は"ShibCompatValidUser On"を指定してください。
詳細: Shibboleth Wiki: Recommended Practices for Compatibility

2.4に移行するとrequireの条件を満たさない場合に表示されるエラーページが"403 Forbidden"から"401 Unauthorized"に変更されます。これに伴いshibboleth2.xmlの<Errors>要素に記述されたaccess属性(エラーページのカスタマイズ)が有効になりません。ApacheのErrorDocumentで代替してください。

なお、Apache httpd 2.4上でSPを構築した場合、なんらかの条件のもとで、シボレス認証が必要な場面で"401 Unauthorized"というエラーが発生するという情報があります。この場合は以下の方法を試してみてください(CentOS 7での手順です)。
/etc/httpd/conf.modules.conf.d/00-shib.conf のようなファイル名で以下の内容で新規ファイルを作成し、/etc/httpd/conf.d/shib.conf の該当行を削除してください。終わりましたらhttpdを再起動してください。

...

2016-12-09 [upki-fed:01121] Re: Proxy配下でのSP構築に関して
関連: https://issues.shibboleth.net/jira/browse/SSPCPP-628
関連: (Shibboleth Users ML) Configuration of SP with apache and mod_shib - HTTP 401 error

SP 3.2

...

.x

...

2.6.0とバージョンは変わっておりませんが、2.6.0リリース後にCentOS 6/7(RHEL 6/7)向けにlibcurlのアップデートが出ていますので、適宜アップデートしてください。
http://marc.info/?l=shibboleth-announce&m=147817836306162&w=2

As a sidenote, the RPMs supplied for libcurl on RHEL 6/7 have also been updated.

SP 2.5.x から SP 2.6.x へアップデートする場合の注意点

2.6.0でのセキュリティフィックスはXerces-Cライブラリについてのみ。
いくつか機能追加および運用改善オプション(後述する SPアップデートに関する情報 および verifyBackup="false")あり。

ライブラリがlibsaml9およびlibxmltooling7にバージョンアップしています。不要なら以下のように以前のバージョンは削除してください。

パネル
$ sudo yum erase libsaml8 libxmltooling6

ignoreCase属性を使用している場合は以下の情報を元にcaseSensitiveを使うように設定ファイルを更新してください。
2016-07-27 [upki-fed:01064] Shibboleth SP脆弱性情報にかかる補足(Re: Shibboleth SP の脆弱性について (2016/5/6)

2016-07-13までに提供していたRPMパッケージはデフォルト設定ファイルのcipherSuitesに問題がありTLS接続でエラーになる可能性があります。デフォルト設定ファイルの問題ですので原則的にこの期間に新規インストールした方が対象となり、cipherSuites=の記述をコピーしていない限り以前のバージョンからアップデートした方は対象外です。
2.6.0-1.1をインストールしている方は2.6.0-2.1にアップデートした上で、shibboleth2.xmlに

コード ブロック
    <ApplicationDefaults entityID="https://sp.example.org/shibboleth"
                         REMOTE_USER="eppn persistent-id targeted-id"
                         cipherSuites="ECDHE+AESGCM:ECDHE:!aNULL:!eNULL:!LOW:!EXPORT:!RC4:!SHA:!SSLv2">

のような記述があれば、cipherSuites="..."の部分を削除してください。
Shibboleth Projectからのアナウンス: http://marc.info/?l=shibboleth-announce&m=146834985418022&w=2

その他の新機能:
exportDuplicateValues
template (base64-encoded SAML <AuthnRequest> message)

XERCES_DISABLE_DTD=1

脆弱性の温床であるDTD形式での記述を一切処理しないようにすることができます。Shibbolethおよび学認では使用しておりませんので、セキュリティ強化のため是非この手順を実施してください。

実施するには、/etc/sysconfig/shibdおよび/etc/sysconfig/httpdの末尾に以下の行を加えます。(CentOS 7での手順は後述)

書式設定済み
export XERCES_DISABLE_DTD=1

shibdおよびhttpdの再起動後に、以下のようなコマンドを使って当該環境変数が設定されていることを確認してください。

書式設定済み
$ sudo /sbin/service httpd restart
$ sudo /sbin/service shibd restart
$ sudo less /proc/`pidof -s shibd`/environ
$ sudo less /proc/`pidof -s httpd`/environ
情報

CentOS 7では上記手順では反映されませんので、下記手順に従ってください。

shibdについては、以下のようにしてsystemdの設定で環境変数を追加します。最後のコマンドで当該環境変数が設定されていることを確認してください。

書式設定済み
$ sudo systemctl edit shibd.service
[Service]
Environment=XERCES_DISABLE_DTD=1
$ sudo systemctl daemon-reload
$ sudo systemctl restart shibd
$ sudo less /proc/`pidof -s shibd`/environ

httpdのほうはexportを省いた以下の行を/etc/sysconfig/httpdの末尾に追記します。同様に最後に記載したコマンドで当該環境変数が設定されていることを確認してください。

書式設定済み
XERCES_DISABLE_DTD=1
書式設定済み
$ sudo vi /etc/sysconfig/httpd
$ sudo systemctl restart httpd
$ sudo less /proc/`pidof -s httpd`/environ

verifyBackup="false"

バッキングファイルが他者によって変更されないことが確実な場合はSignature MetadataFilterの末尾に verifyBackup="false" を追加してください。起動時のメタデータ読み込み時にバッキングファイルの署名検証がスキップされ起動が速くなります。

コード ブロック
languagexml
<MetadataFilter type="Signature" certificate="/etc/shibboleth/cert/gakunin-signer-2010.cer" verifyBackup="false"/>

SP 2.5.x から SP 2.5.x へのアップデートに関する情報

*はセキュリティフィックス

...

  • 本件はXerces-Cライブラリの脆弱性ですので当該ライブラリのアップデートのみでも対処可能です。またディストリビューションのアップデート提供時期によっては当該ライブラリのアップデート提供時期が後になることが考えられます。その場合自動再起動が行われませんので、上記手順に従って再起動(もしくはOS自体の再起動)を必ず行ってください。

...

  • MetadataProviderにてvalidate="true"がデフォルトになりました。これまでの設定ファイルは上書きされませんので、新規SPでだけ問題が発生している場合はこの影響である可能性があります。例えば、regexp属性を持たない<shibmd:Scope>要素がエラーになります。
    ちなみにIdPv3でもダウンロードしたメタデータのバリデーションを行うのがデフォルトです。
  • 初期のCentOS 7向け(systemd対応版)はリブート時に/var/run/shibboleth/が消えて起動しなくなるので2.5.5-3.1以降を使うこと。

...

2.5.4(*) [upki-fed:00923] Shibboleth SP の脆弱性について (2015/3/19) (CVE-2015-0252)

  • mod_shibのログのデフォルト出力先が /var/log/httpd/{native.log,native_warn.log} から /var/log/shibboleth-www/{native.log,native_warn.log} に変更になっています。
    既存環境で追随するにはnative.logger.distを参考にnative.loggerを修正してください。
  • /var/cache/shibboleth/以下に大量の*.jsonという名前のキャッシュが削除されず残る問題が、このバージョンで修正されています。このファイルが大量にある場合は、適宜削除してください。
  • 2.5.0での修正点に見落としがありましたので、下のほうに追記しました。当該warningが気になる人は対処してください。⇒2.5.0のshibboleth2.xml
  • このバージョン前後でOpenSSL 1.0.1系とリンクするようになり、可能な環境ではECDSA/GCMに対応します。/Shibboleth.sso/Metadataから利用可能なアルゴリズムが確認できます。
  • shibboleth2.xml:
    DiscoveryFilterが追加され、フェデレーションメタデータ中に"hide-from-discovery"と宣言されているIdPがDiscoFeedに入らなくなります。

  • attribute-map.xml:
    uidの行が追加されていますが、デフォルトでコメントアウトされています。

2.5.2(*) Shibboleth SP heap overflow processing InclusiveNamespace PrefixList (CVE-2013-2156)

...

title(shib.confを修正して使っている方向け)shib.confの変更点

 2.5.2において/etc/httpd/conf.d/shib.confに以下の追加が行なわれておりますが、shib.confを修正している場合は反映されません。必要に応じてshib.confを修正してください。
なお、サイト全体にBASIC認証等で制限をかけている場合を除いてこれによる影響はないと思われます。

...

から SP 3.3.x へアップデートする場合の注意点

本リリースよりRPMパッケージの署名に使われるGPG鍵が変更されているために、以前のバージョンからそのままではyumコマンドによるアップデートに失敗します。CentOS等、yumコマンドによりインストールした環境では以下の手順でアップデートしてください。

  1. Shibboleth用のrepositoryファイルの更新
    Shibboleth用のrepositoryファイルを下記URL先より取得できる最新のものに更新してください。
    https://shibboleth.net/downloads/service-provider/latest/RPMS/
    (CentOS 7の場合のコマンド例)

    パネル
    $ sudo curl 'https://shibboleth.net/cgi-bin/sp_repo.cgi?platform=CentOS_7' -o /etc/yum.repos.d/shibboleth.repo
  2. GPG鍵のインポートとアップデートの完了
    repositoryファイルの更新後、yumコマンドによりアップデートを実施すると、新しいGPG鍵のインポートを促されますので、表示されるフィンガープリントが以下と一致することを確認してインポートしてください。

    パネル

    Fingerprint: dcaa 1500 7bed 9de6 90cd 9523 378b 8454 0227 7962

    その後アップデート処理が進みますので、そのまま完了してください。

SP 3.1.x から SP 3.2.x へアップデートする場合の注意点

libsaml, libxmltoolingが合わせてバージョンアップしパッケージ名が変更になっています。古いバージョンは削除されないようなので、他で使っていなければ削除してしまいましょう。

コード ブロック
$ sudo yum erase libsaml11 libxmltooling9

https://www.gakunin.jp/ml-archives/upki-fed/msg01430.html
にて説明していますが、Form SessionInitiatorでdiscoveryTemplate.htmlを使っている場合、3.2.1以降では
forceAuthn, isPassive, acsIndex, authnContextClassRef, authnContextDeclRef, authnContextComparison
の各パラメーターをURLのquery stringで受け渡しHTMLに反映することができなくなっておりますので、そのような機能に依存している箇所がございましたら、代替としてJavaScriptでquery stringを確認するなど別の手段を 使うようにしてください。

また、3.2.1以降<Errors>関連のテンプレートについて、query stringパラメーターによる置換のデフォルトがオフになったことにより、この機能に依存している箇所に影響が出る可能性があります。JavaScriptなど別の手段でカバーすることが推奨されますが、externalParameters="true"により以前のバージョンの挙動を再現することも可能です。

SP 3.0.x から SP 3.1.x へアップデートする場合の注意点

libsaml, libxmltoolingが合わせてバージョンアップしパッケージ名が変更になっています。古いバージョンは削除されないようなので、他で使っていなければ削除してしまいましょう。

コード ブロック
$ sudo yum erase libsaml10 libxmltooling8

Shibboleth IdP v3における設定ファイルのフラット化と同じことがSPでも進行しており、大量のDEPRECATEDのwarningが出力されるようになっています。実際に支障をきたすのはv4以降ですが、attribute-policy.xml.distファイルおよびIdPフラット化の記述を参考に時間のあるときに対処しておくことを推奨します。

SP 3.0.x から SP 3.0.x へのアップデートに関する情報

3.0.4.0までの3系で、Windowsサーバ向けのIIS 7モジュールを使っていて、<Sessions>で handlerURL="/acs/Shibboleth.sso" のようにハンドラのパスを変更している場合うまく動かないという問題があります。3.0.4.1で修正されました。また、以下の記述を加えれば回避できます。

コード ブロック
languagexml
<ISAPI handlerPrefix="/acs/Shibboleth.sso" >

詳細: https://issues.shibboleth.net/jira/browse/SSPCPP-856

3.0.0には起動に失敗するものを含むバグが存在します。3.0.1以降にアップデートしてください。アップデート後、shibboleth2.xml veryifyBackup= という文字列が含まれる場合は誤字ですので verifyBackup= に修正してください。

3.0.1/3.0.0にはWindows版v3の新機能である.NETハンドラがうまく動かない問題と、<SSO>要素のsigning指定が反映されないという問題があります。3.0.2以降に更新してください。

SP 2.6.x から SP 3.0.x へアップデートする場合の注意点

1. 事前準備

shibboleth2.xmlに accessError.html および syslog.logger への参照がないことを確認してください。参照している場合は、ファイルが編集されている(.distを付加したファイルと同一でない)ことを確認してください。
参照されておりかつ編集されていない場合、アップデートで当該ファイルが削除され問題が発生する可能性があります。編集された状態のものは削除されませんので、コメントを挿入しておくなどして対処してください。

同様に、attribute-map.xmlが編集されていない場合、かつ属性 unscoped-affiliation (eduPersonAffiliation) を使っておりv3にバージョンアップする場合は、アップデート後にunscoped-affiliationの受け渡しに失敗するようになりますので、編集(コメントを挿入しておくなど)して対処してください。

2. SPアップデート後の作業

2.1. 不要なパッケージの削除

libsaml, libxmltooling, libxml-security-c, liblog4shib, libxerces-cが合わせてバージョンアップしパッケージ名が変更になっています。また、CentOS 7ではBaseリポジトリのxerces-cパッケージを使用していたものが独自のlibxerces-c-3_2パッケージを使用するようになっています。古いバージョンは削除されないようなので、他で使っていなければ削除してしまいましょう。

パネル

$ sudo yum erase libsaml9 libxmltooling7 libxml-security-c17 liblog4shib1 libxerces-c-3_1 xerces-c

2.2. 不要なファイルの削除

2.xで/var/log/shibboleth-www/以下に出力されていたログは3.0では/var/log/messagesに出力されるようになりました。既存のログファイルに有益なものはないと思いますので削除してかまいません。

パネル

$ sudo rm -r /var/log/shibboleth-www

注意

ただし native.logger を修正している場合は自動で出力先が切り替わりませんので、/etc/shibboleth/native.logger を同ディレクトリの native.logger.dist と比較し、必要な修正を適用してください。
ちなみに /var/log/messages には多種のログが混在しており、mod_shibからの出力は以下のようなフォーマットで出力されます。

書式設定済み
Nov 10 22:37:54 localhost shobboleth: WARN Shibboleth.Application : ...

また、2.xには不要になったDiscoFeedキャッシュの削除処理に不具合があり、当該ディレクトリに残り続けているものがある可能性があります。アップデート後1時間以上経ってから以下のようなコマンドを実行して不要なファイルを削除してください。

パネル

$ sudo find /var/cache/shibboleth/ -name \*.json -type f -mmin +60 -exec rm {} \;

2.3. shibboleth2.xmlの新形式への移行

shibboleth2.xmlがv2とv3で唯一異なる形式を持つファイルです(次に示すsecurity-policy.xmlを除いて)。SP v3でも旧形式のファイルを読み込むことは可能ですがいずれサポートされなくなりますので新形式に移行する手順をご紹介します。

ヒント

紛らわしいですがファイル名はv3でも shibboleth2.xml のままです。

注意

新形式(3.0フォーマット)でデフォルト値が変更になった部分があり、該当機能を使っている場合は移行する際には注意が必要です。これまで判明しているところでは、<SessionCache>cacheAssertions="false"がデフォルトになったことによりtrueを明示していない場合はWebアプリケーションがアサーションを直接取得することができなくなります。従来の値を指定するようにshibboleth2.xmlを修正してください。
詳細は開発元のReleaseNotesの3.0.0の"Changed Defaults"を参照してください。

まず、アップデート後起動するとDEPRECATEDと表示されているログが見られると思います。これは新形式で許容されない記述の指摘ですので、DEPRECATEDが表示されなくなるまで修正を繰り返します。典型的には

コード ブロック
languagexml
<MetadataProvider type="XML" validate="true" file="partner-metadata.xml"/>

のような記述の file=path= に、 uri=url= に修正する必要があります。

DEPRECATEDログが出なくなったら、ファイル先頭の2.0を3.0に変更(2か所)して完了です。

パネル

<SPConfig xmlns="urn:mace:shibboleth:3.0:native:sp:config"
    xmlns:conf="urn:mace:shibboleth:3.0:native:sp:config"

2.4. security-policy.xmlが新形式へ移行していることの確認

これもv2からv3で形式が変わったファイルですが、ほとんどの場合編集の必要がないため自動的に新形式に移行されているはずです。security-policy.xmlとsecurity-policy.xml.distを比較して差分がないことを確認してください。差分がある場合は必要な変更をマージしファイル先頭の名前空間指定を2.0から3.0に修正してください。

パネル

$ diff /etc/shibboleth/security-policy.xml{.dist,}

2.5. transaction.log新フォーマットへの移行

これは必須ではありませんが、SP 3から/var/log/shibboleth/transaction.logに新フォーマットが導入され従来より見やすくなっております。アップデートした場合には自動的に移行はされませんので、以下の手順で移行してください。

展開
title新旧transaction.logの比較

1アクセスが2行で表されるようになり、各行のプレフィックス含め機械的に読みやすいように改善されています。

旧フォーマット:

パネル

2017-02-20 11:13:29 INFO Shibboleth-TRANSACTION [1]: New session (ID: _6f1...) with (applicationId: default) for principal from (IdP: https://idp.example.ac.jp/idp/shibboleth) at (ClientAddress: xxx.xxx.xxx.xxx) with (NameIdentifier: AAdz...vQ==) using (Protocol: urn:oasis:names:tc:SAML:2.0:protocol) from (AssertionID: _b2a...)
2017-02-20 11:13:29 INFO Shibboleth-TRANSACTION [1]: Cached the following attributes with session (ID: _6f1...) for (applicationId: default) {
2017-02-20 11:13:29 INFO Shibboleth-TRANSACTION [1]:    eppn (1 values)
2017-02-20 11:13:29 INFO Shibboleth-TRANSACTION [1]: }

新フォーマット(最後から2番目の項はUser Agent、最後の項はクライアントIPアドレスです):

パネル

2018-08-03 15:08:07|Shibboleth-TRANSACTION.AuthnRequest|||https://idp.example.ac.jp/idp/shibboleth||||||urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect|||||| 2018-08-03 15:08:17|Shibboleth-TRANSACTION.Login|uid@example.ac.jp|_1d7...|https://idp.example.ac.jp/idp/shibboleth|_19f...|urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport|2018-08-03T15:08:14|eppn(1)|AAdz...cA==|urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST||urn:oasis:names:tc:SAML:2.0:status:Success|||Mozilla/5.0 ...|xxx.xxx.xxx.xxx

shibboleth2.xmlの先頭(<SPConfig>の最初の子要素として。ただしその位置に<Extensions>がある場合はその下)に以下を追加するか、すでに<OutOfProcess>要素が存在する場合にはその属性としてtranLogFormat=の部分を追加してください。

コード ブロック
languagexml
    <OutOfProcess tranLogFormat="%u|%s|%IDP|%i|%ac|%t|%attr|%n|%b|%E|%S|%SS|%L|%UA|%a" />

次に、shibd.loggerがshibd.logger.distと差分がある場合には、必要な変更をマージしてください。2.6.1と3.0.2の差分は以下の通りです。

展開
コード ブロック
languagediff
--- 2.6.1/shibd.logger.dist    2017-11-15 09:40:50.000000000 +0900
+++ 3.0.2/shibd.logger.dist    2018-08-03 09:41:41.000000000 +0900
@@ -29,11 +29,14 @@
 # logs XML being signed or verified if set to DEBUG
 log4j.category.XMLTooling.Signature.Debugger=INFO, sig_log
 log4j.additivity.XMLTooling.Signature.Debugger=false
+log4j.ownAppenders.XMLTooling.Signature.Debugger=true
 
 # the tran log blocks the "default" appender(s) at runtime
 # Level should be left at INFO for this category
 log4j.category.Shibboleth-TRANSACTION=INFO, tran_log
 log4j.additivity.Shibboleth-TRANSACTION=false
+log4j.ownAppenders.Shibboleth-TRANSACTION=true
+
 # uncomment to suppress particular event types
 #log4j.category.Shibboleth-TRANSACTION.AuthnRequest=WARN
 #log4j.category.Shibboleth-TRANSACTION.Login=WARN
@@ -61,7 +64,7 @@
 log4j.appender.tran_log.maxFileSize=1000000
 log4j.appender.tran_log.maxBackupIndex=20
 log4j.appender.tran_log.layout=org.apache.log4j.PatternLayout
-log4j.appender.tran_log.layout.ConversionPattern=%d{%Y-%m-%d %H:%M:%S} %p %c %x: %m%n
+log4j.appender.tran_log.layout.ConversionPattern=%d{%Y-%m-%d %H:%M:%S}|%c|%m%n
 
 log4j.appender.sig_log=org.apache.log4j.FileAppender
 log4j.appender.sig_log.fileName=/var/log/shibboleth/signature.log

3. SP 3.0からの新機能

  • Stateless Clustering
    ReleaseNotesより:

    A form of session recovery across clustered SP nodes using encrypted cookies is available. While making clustering much simpler, it does affect the behavior of logout in some cases, but it offers more flexibility for deployers willing to make trade-offs.

  • /Shibboleth.sso/Logout/Admin
    ReleaseNotesより:

    An endpoint is available to programmatically remove sessions based on the SP-assigned session ID, with associated communication to an IdP via SOAP where possible (though this is rarely possible). While complex, it is possible to create a more limited shared store of revoked sessions that prevents the stateless session recovery feature from re-creating the session in some cases, without requiring a fully-shared session store.

  • entityIDSelf / APPLICATIONID-override.xml
    ReleaseNotesより:

    A set of virtual hosts can be auto-assigned a distinct entityID without the creation of <ApplicationOverride> elements to do so, using the new entityIDSelf content setting. While this does not eliminate the overhead of managing metadata for each host, it does eliminate most actual configuration overhead within the SP itself.

    In addition, when overrides are still required for other purposes, it is now possible to load XML fragment files containing just the override configurations from a directory at runtime, including adding additional overrides on the fly without configuration reload.

なお、CentOS 7ではXerces Cライブラリを独自提供することによりDTDを無効化するという機能強化が行われております。攻撃耐性強化のために、是非移行をご検討ください。

4. SP 3.0からの注意事項

  • 上記「1. 事前準備」にも書きましたが、設定ファイルのデフォルト値の変更に影響を受ける場合があります。具体的にはバージョン毎に以下の属性設定が有効化されており、v2でこの範囲内の属性しか利用していない場合(設定ファイルがデフォルトのままの場合)設定ファイルが上書きされv3のデフォルトが適用されますので unscoped-affiliation が利用できなくなります。問題が発生した場合、attribute-map.xmlの該当箇所がコメントアウトされていますのでその部分だけ解除してください。

    バージョン初期設定ファイルで利用可能な属性
    2.6.1eppn, affiliation, unscoped-affiliation, entitlement, targeted-id, persistent-id
    3.0.3subject-id, pairwise-id, eppn, affiliation, entitlement, persistent-id

    ※ targeted-idはSAML1用であり以前から利用は推奨されていません
    ※ subject-idおよびpairwise-idは2019年3月現在学認では規定されていません

    パネル

    ...
        -->
       
    <Attribute name="urn:oid:1.3.6.1.4.1.5923.1.1.1.1" id="unscoped-affiliation">
           
    <AttributeDecoder xsi:type="StringAttributeDecoder" caseSensitive="false"/>
       
    </Attribute>
       
    <!--
    ...
       
    -->
       
    <Attribute name="urn:mace:dir:attribute-def:eduPersonAffiliation" id="unscoped-affiliation">
           
    <AttributeDecoder xsi:type="StringAttributeDecoder" caseSensitive="false"/>
       
    </Attribute>
       
    <!--
    ...

  • レアケースですがSPが直接外部サーバへHTTPS接続する場合(例えばメタデータのダウンロード)、同梱の設定ファイルでは(つまりv3で新規に構築すると)TLS 1.2以上を使うように強制されます。問題がある場合はshibboleth2.xmlのcipherSuitesの項を修正してください。(少なくとも学認メタデータのダウンロードで問題になることはありません)
  • ハッシュアルゴリズムとしてSHA-1ではなくSHA-256を使うようになっています。これが問題になることはないと思いますが、古いIdPと連携する場合はご注意ください。
  • 同梱の設定ファイルからSAML 1.xサポートが削除されております。つまりSPを新規に構築した場合SAML 2.0をサポートしていないIdPと連携できません。必要があればSAML1を有効化してください。
  • 同様に、SPv3同梱の設定ファイルでは、属性の取得に失敗した場合Attribute Queryリクエストを試みる機能がデフォルトでは機能しないようになっています。必要な場合はQuery AttributeResolverを有効化してください。
  • Solarisがサポート外となりました。

5. その他の情報

shibbolethリポジトリが冗長化され設定ファイルが変更になっております。古いものをお使いの場合は技術ガイドの手順に従って /etc/yum.repo.d/shibboleth.repo ファイルを更新してください。これに伴いパッケージの更新が必要になることはありません。

SP 3へのアップデートに関する他の情報源: (Shibboleth Wiki) UpgradingFromV2

SP 2.4.x から SP 2.5.x へアップデートする場合の注意点

0. 事前準備

以前情報交換メーリングリストでご案内いたしましたように、rpmパッケージで導入されている場合は、shibd という非rootユーザが新たに作られその権限で起動するようになるため、昔の学認の技術ガイドに沿って設定している場合に2点問題が生じます。技術ガイドは2011年11月に修正済みです。それ以前にSPを構築された方は以下の設定を確認してください。

まず、server.key のパーミッションの問題です。rootにしか読み取り権限を与えていない場合、2.5をインストールした時点で自動再起動がかかるため、shibdがエラーで停止してしまいます。
回避方法はいくつかありますが、下記のように sp-key.pem をシンボリックリンクにしておくと、2.5インストール時に自動的に server.key のownerが修正されます。

書式設定済み
$ sudo mv -i /etc/shibboleth/sp-key.pem{,.dist} && sudo ln -s cert/server.key /etc/shibboleth/sp-key.pem
注意

この回避策は当該秘密鍵がSPのみで使用されている場合で、slapdなど他のプロセスからも参照されている場合は注意が必要です。
具体的に言うと、アップデート前の時点で秘密鍵ファイルのowner/グループがroot:rootでない場合が該当します。上述のようにシンボリックリンクを作成すると、2.5へのアップデートによってこれがshibd:shibdに強制変更されます。ACLを含めたパーミッションは変更されないようですので、setfacl等でACLを設定しておけば回避できます。

2点目の問題は、ダウンロードしたメタデータのバックアップファイルを置くディレクトリのパーミッションです。/etc/shibboleth/metadata/ にバックアップを置くように設定されている場合、このディレクトリはshibdユーザの権限ではファイルが置けません。

回避方法は、shibboleth2.xmlで

backingFilePath="/etc/shibboleth/metadata/federation-metadata.xml"

のように絶対パスで指定している部分を

backingFilePath="federation-metadata.xml"

のように相対パスに変更します。このように変更しておけば、適切にownerが設定されるディレクトリ /var/cache/shibboleth/ を使うようになります。

注意

これを無視してアップデートすると以下のようなエラーがログに記録されるようになります。(リモートのメタデータにアクセスできている限りにおいてSP停止などの実害はありません)

書式設定済み
2011-10-17 18:30:07 DEBUG OpenSAML.MetadataProvider.XML [GakuNinMetadata]: committing backup file to permanent location (/etc/shibboleth/metadata/federation-metadata.xml)
2011-10-17 18:30:07 CRIT OpenSAML.MetadataProvider.XML [GakuNinMetadata]: unable to rename metadata backup file

1. SPアップデート後

事前準備の後始末

事前準備で sp-key.pem をシンボリックリンクにしていた場合、それを元に戻してowner/グループを2.5対応に変更します。

書式設定済み
$ sudo chown shibd:shibd /etc/shibboleth/sp-key.pem.dist && sudo rm /etc/shibboleth/sp-key.pem && sudo mv -i /etc/shibboleth/sp-key.pem{.dist,}

また、メタデータのバックアップファイルの移動に伴い、/etc/shibboleth/metadata/federation-metadata.xml* は使われなくなっておりますので、紛らわしくないように削除しておきましょう。

sudo rm /etc/shibboleth/metadata/federation-metadata.xml*

これにより /etc/shibboleth/metadata/ に1つもファイルがなくなったら、ディレクトリ自体を削除してしまってかまいません。

sudo rmdir /etc/shibboleth/metadata/

もし、事前準備後shibdを再起動していたら、/var/run/shibboleth/以下にバックアップファイルが作成されています。しかしアップデート後は/var/cache/shibboleth/以下が使われているはずです。こちらも紛らわしくないように削除しておきましょう。同様に、/var/run/shibboleth/側に *.json というファイルがある場合も削除してかまいません。

sudo rm /var/run/shibboleth/federation-metadata.xml*
sudo rm /var/run/shibboleth/*.json

不要なパッケージの削除

libsaml, libxmltooling, libxml-security-cが合わせてバージョンアップしパッケージ名が変更になっています。古いバージョンは削除されないようなので、他で使っていなければ削除してしまいましょう。

sudo yum erase libsaml7 libxmltooling5 libxml-security-c16

shibboleth2.xml

静的ファイルの1つ、Shibbolethロゴが削除された影響の1つです。
以前からのshibboleth2.xmlを使っている場合は以下の行を含んでいるはずですが、当該ファイルが削除されていますので、shibboleth2.xmlのこの行も削除してください。

logoLocation="/shibboleth-sp/logo.jpg"

また、以前からのshibboleth2.xmlをそのまま使っている場合は2.5.0以降では以下の警告が表示されるようになります。

書式設定済み
2012-10-13 18:54:49 WARN Shibboleth.AttributeExtractor.XML : attribute mappings are reloadable; be sure to restart web server when adding new attribute IDs

attribute-map.xmlの読み込み部分にreloadChanges="false"を付けるとよいです。こうすることでattribute-map.xmlの修正時に反映するには再起動が必要になりますが、元々そうすべきでした(そのほうが安全です)。

コード ブロック
languagediff
         </MetadataProvider>
 
         <!-- Map to extract attributes from SAML assertions. -->
-        <AttributeExtractor type="XML" validate="true" path="attribute-map.xml"/>
+        <AttributeExtractor type="XML" validate="true" reloadChanges="false" path="attribute-map.xml"/>
         
         <!-- Use a SAML query if no attributes are supplied during SSO. -->
         <!-- 

詳細: Default Reloading of Attribute Mappings Disabled - NativeSPConfigurationChanges - Shibboleth Wiki

shib.conf

静的ファイルの1つ、Shibbolethロゴが削除された影響のもう1つです。
/etc/httpd/conf.d/shib.conf を修正して使っていた方は、shib.conf.rpmnew というファイルが新たに作成されていると思います。差分を確認し(下記の行は削除して問題ありません)必要があれば修正の上、shib.confを置き換えてください。

書式設定済み
--- /etc/httpd/conf.d/shib.conf	2013-05-21 19:33:44.696374317 +0900
+++ /etc/httpd/conf.d/shib.conf.rpmnew	2013-01-10 04:30:48.000000000 +0900
@@ -20,7 +20,6 @@
     Allow from all
   </Location>
   Alias /shibboleth-sp/main.css /usr/share/shibboleth/main.css
-  Alias /shibboleth-sp/logo.jpg /usr/share/shibboleth/logo.jpg
 </IfModule>

 #

2. SP 2.5.0からの新機能

一部GakuNinShareでご紹介しています。
Shibboleth SP 2.5.0からの新機能

3. その他の情報

  • 展開
    titleその他未整理の情報

    PKCS#1.5使えなくなった - /etc/shibboleth/security-policy.xml
          <AlgorithmBlacklist includeDefaultBlacklist="true"/>
    新機能Metadata Attribute Extractor non-ASCIIでエラー SSPCPP-547
    _shibsession_* cookie HttpOnlyが付くようになった
    _shibstate_* 時限付き
    acl ::1入った
    helpLocation="/about.html"
    cookieProps書式変更
    handlerSSL="true"
    shibboleth2.xmlの書式エラーでhttpdが起動しなくなった?
    /var/log/httpd/native.log, native_warn.logが記録されるようになる

    2012-08-08 04:35:19 CRIT XMLTooling.Logging : error in file permissions or logging configuration: exception creating appender: failed to open log file (/var/log/httpd/native.log)
    2012-08-08 04:35:19 CRIT Shibboleth.Config : failed to load new logging configuration from (native.logger)

    https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPConfigurationChanges
    https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPInterestingFeatures
    requireAuthenticatedEncryption signResponse="conditional"にしないと

    opensaml::FatalProfileException at (https://HOSTNAME/Shibboleth.sso/SAML2/POST)
    A valid authentication statement was not found in the incoming message.

    ログには以下が記録される。

    2012-10-14 09:26:14 ERROR Shibboleth.SSO.SAML2 [7]: failed to decrypt assertion: Unauthenticated data encryption algorithm unsupported.

    2012-10-13 18:54:49 WARN Shibboleth.PropertySet : deprecation - remapping property (relayStateLimit) to (redirectLimit)
    2012-10-13 18:54:49 WARN Shibboleth.Application : empty/missing cookieProps setting, set to "https" for SSL/TLS-only usage
    2012-10-13 18:54:49 WARN Shibboleth.Application : handlerSSL should be enabled for SSL/TLS-enabled web sites

以前の情報

SPアップデート手順(*はセキュリティフィックス)

...