更新: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 では、この問題は起きません。
- <MetadataProvider type="XML" url="https://idp.foo.ac.jp/metadata.xml"
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