更新:2020/4/3

Shibboleth SP v3 は rpm パッケージで提供されています。RHEL/CentOS であれば yum を使ったインストールができ、yum の利用が推奨されています。

Debian 8 および Debian 9 では apt パッケージリポジトリには SP v2.6 がありますが、v3 はありません。Debian10 では SP v3系が apt パッケージリポジトリで提供されています。

ここでは Debian 8 または Debian 9 に対して、Shibboleth SP v3 をソースコンパイルして導入する手順を説明します。

前提

WebClass がインストールされた Web サーバとします。コンパイルに必要ないくつかのライブラリが WebClass のインストールでインストールされます。以降の手順では、この状態に対する不足のみインストールしています。

コンパイルしたライブラリが Debian の apt 管理のライブラリと混じると混乱のもととなるため、ここではあえて /opt/shibboleth-sp-3/ というディレクトリにインストールして隔離します。

検証は基本的に Debian9 で行っていますが、2019/3 時点では Debian8 でも全く同じ操作でインストールできます。

SP v3.0.3 (2019/3) 時点での最新のソースを使用しています。ライブラリも含めてアップデートがあると、依存ライブラリバージョンが変わる可能性があるのに注意してください。

問題

  • Debian9 で下記手順により Shibboleth SP 3.0.4 をビルドすると、shibboleth2.xml にて下記のようにHTTPSでメタデータを取得する際、SegmentationFaultで落ちてしまいます。(2019/9/19)
    • <MetadataProvider type="XML" url="https://idp.foo.ac.jp/metadata.xml"
                backingFilePath="partner-metadata.xml" maxRefreshDelay="7200">
      </MetadataProvider>
    • Debian9 では、3.0.2までバージョンを落としてもこの問題は起きます。
    • プロトコルがHTTPの場合、もしくはファイルを手で取得してローカルファイルを読み込ませれば動作します。
    • Debian8 であれば、同様のビルド手順でもこの問題は起きません。
    • Debian10 の apt パッケージ版 v3.0.4 では、この問題は起きません。

 

APT からのライブラリ追加

以下のコマンドでライブラリを補います。

# apt-get install libboost-dev libssl-dev libcurl3 libcurl4-openssl-dev zlib1g-dev

xml-security-c は libxerces-c 3.2 を必要としますが、Debian 9 ではv 3.1 ですので、ここではインストールしません。

ソースパッケージのビルド

以下のビルド作業は、全部でだいたい30分~1時間くらいかかります。

ビルドとインストールの用意

# mkdir /opt/shibboleth-sp-3
# mkdir ~/shibboleth-sp-source

log4shib

ソースファイルと資料はこちらです。

https://shibboleth.net/downloads/log4shib/latest/

https://wiki.shibboleth.net/confluence/display/SP3/log4shib

検証時のバージョンは 2.0.0 です。

# cd ~/shibboleth-sp-source
# wget https://shibboleth.net/downloads/log4shib/latest/log4shib-2.0.0.tar.gz
# wget https://shibboleth.net/downloads/log4shib/latest/log4shib-2.0.0.tar.gz.md5
# md5sum -c log4shib-2.0.0.tar.gz.md5
log4shib-2.0.0.tar.gz: OK
# tar zxf log4shib-2.0.0.tar.gz
# cd log4shib-2.0.0
# ./configure --disable-static --disable-doxygen --prefix=/opt/shibboleth-sp-3
# make && make install

Xerces-C

ソースと資料はこちらです。

http://www-us.apache.org/dist//xerces/c/3/sources/

https://wiki.shibboleth.net/confluence/display/SP3/Xerces-C

資料には Xerces-C 3.x が必要と書いてありますが、3.2 が必要です。

検証時のバージョンは 3.2.2 です。

# cd ~/shibboleth-sp-source
# wget http://www-us.apache.org/dist//xerces/c/3/sources/xerces-c-3.2.2.tar.gz
# wget http://www-us.apache.org/dist//xerces/c/3/sources/xerces-c-3.2.2.tar.gz.sha256
# sha256sum -c xerces-c-.3.3.2.tar.gz.sha256
xerces-c-3.2.2.tar.gz: OK
# tar zxf xerces-c-.3.3.2.tar.gz
# cd xerces-c-.3.3.2
# ./configure  --disable-static --prefix=/opt/shibboleth-sp-3
# make && make install

次に進む前に、ここまでコンパイルして用意したライブラリを次のビルドで使えるように環境変数を出力します。

# export PKG_CONFIG_PATH=/opt/shibboleth-sp-3/lib/pkgconfig

XML-Security-C

ソースと資料はこちらです。

https://www.apache.org/dist/santuario/c-library/

https://wiki.shibboleth.net/confluence/display/SP3/XML-Security-C

検証時のバージョンは 2.0.2 です。

# cd ~/shibboleth-sp-source
# wget https://www.apache.org/dist/santuario/c-library/xml-security-c-2.0.2.tar.gz
# wget https://www.apache.org/dist/santuario/c-library/xml-security-c-2.0.2.tar.gz.sha256
# sha256sum -c xml-security-c-2.0.2.tar.gz.sha256
xml-security-c-2.0.2.tar.gz: OK
# tar zxf xml-security-c-2.0.2.tar.gz
# cd tar zxf xml-security-c-2.0.2
# ./configure --without-xalan --disable-static --prefix=/opt/shibboleth-sp-3
# make && make install

XML-Tooling-C

ソースと資料はこちらです。

https://shibboleth.net/downloads/c++-opensaml/latest/

https://wiki.shibboleth.net/confluence/display/SP3/XMLTooling-C

xmltooling-3.0 の最新版を取得します。

検証時のバージョンは 3.0.3 です。

# cd ~/shibboleth-sp-source
# wget https://shibboleth.net/downloads/c++-opensaml/latest/xmltooling-3.0.3.tar.gz
# wget https://shibboleth.net/downloads/c++-opensaml/latest/xmltooling-3.0.3.tar.gz.sha256
# sha256sum -c xmltooling-3.0.3.tar.gz.sha256
xmltooling-3.0.3.tar.gz: OK
# tar zxf xmltooling-3.0.3.tar.gz
# cd xmltooling-3.0.3
# ./configure --with-log4shib=/opt/shibboleth-sp-3 --prefix=/opt/shibboleth-sp-3 -C
# make && make install

OpenSaml3

ソースと資料はこちらです。

https://shibboleth.net/downloads/c++-opensaml/latest/

https://wiki.shibboleth.net/confluence/display/SP3/OpenSAML-C

opensaml 3.0 の最新版を取得します。

検証時のバージョンは 3.0.0 です。

# cd ~/shibboleth-sp-source
# wget https://shibboleth.net/downloads/c++-opensaml/latest/opensaml-3.0.0.tar.gz
# wget https://shibboleth.net/downloads/c++-opensaml/latest/opensaml-3.0.0.tar.gz.sha256
# sha256sum -c opensaml-3.0.0.tar.gz.sha256
opensaml-3.0.0.tar.gz: OK
# tar zxf opensaml-3.0.0.tar.gz
# cd opensaml-3.0.0
# ./configure --with-log4shib=/opt/shibboleth-sp-3 --prefix=/opt/shibboleth-sp-3 -C
# make && make install

Shiboleth sp

ソースと資料はこちらです。

https://shibboleth.net/downloads/service-provider/latest/

https://wiki.shibboleth.net/confluence/display/SP3/LinuxBuild

検証時のバージョンは 3.0.3 です。

# cd ~/shibboleth-sp-source
# wget https://shibboleth.net/downloads/service-provider/latest/shibboleth-sp-3.0.3.tar.gz
# wget https://shibboleth.net/downloads/service-provider/latest/shibboleth-sp-3.0.3.tar.gz.sha256
# sha256sum -c shibboleth-sp-3.0.3.tar.gz.sha256
shibboleth-sp-3.0.3.tar.gz: OK
# tar zxf shibboleth-sp-3.0.3.tar.gz
# cd shibboleth-sp-3.0.3
# ./configure --with-log4shib=/opt/shibboleth-sp-3 --prefix=/opt/shibboleth-sp-3
# make && make install

3.0.4 をコンパイルする場合は、configure にオプションを追加する必要があります。以下のコマンドに置き換えてください。

# apt-get install apache2-dev
# cd shibboleth-sp-3.0.4
# ./configure --with-log4shib=/opt/shibboleth-sp-3 --enable-apache-24 --with-apx2=/usr/bin/apxs2 --prefix=/opt/shibboleth-sp-3
# make && make install

 

起動設定

/opt/shibboleth-sp-3/ は以下のようになっています。

  • bin/
  • etc/
    • shibboleth/
  • include/
  • lib/
  • sbin/
  • share/
  • var/
    • cache/
    • log/
      • httpd/
      • shibboleth/
    • run/

普段は etc/shibboleth と var/shibboleth しか見ないので、扱いやすいように /etc/ と /var/log/ にシンボリックリンクを張ります。

# ln -s /opt/shibboleth-sp-3/etc/shibboleth /etc/shibboleth
# ln -s /opt/shibboleth-sp-3/var/log/shibboleth /var/log/shibboleth
# cd /etc/shibboleth

起動スクリプトを設置し、デーモンの起動を確かめます。

# cp shibd-debian /etc/init.d/shibd
# chmod +x /etc/init.d/shibd
# vi /etc/init.d/shibd
DAEMON_USER=_shibd  < = ユーザ名の調整
# systemctl daemon-reload
# systemctl enable shibd
# systemctl start shibd
# systemctl status shibd
# systemctl stop shibd
# systemctl status shibd

ここでは init.d のデーモンスクリプトを使用していますが、systemd が認識してくれます。実行ユーザの指定に注意してください。

続いて、Apache のモジュール設定をします。

# cp cp apache24.config /etc/apache2/mods-available/shibd.load
# a2enmod shid
# systemctl restart apache2

ログの確認や、 https://localhost/Shibboleth.sso/Status を確認してシボレスが実行できることを確認します。この後で IDP に応じた連携設定をします。

参考

wiki.shibboleth.net : SP3/LinuxBuild