...
目次 maxLevel 2 minLevel 2 style none
...
アンカー idpInst1 idpInst1
1. Shibboleth IdP (version 3.
...
2以降) の動作要件
以下は本技術ガイドで構築する前提となる環境です。
- メモリ2GB以上
Java実行環境への推奨割り当てメモリ量が1.5GBですので、その動作に支障がないようにしてください。 - Apache HTTP Server 2.2 4 以上 と mod_ssl
以下のパッケージはインストール方法も含めて以降の手順で説明します。
...
2. OSをインストールする
1. OSでの設定
・OS(CentOS 6)インストール7)インストール
インストーラでインストールするもの。
Webサーバー (HTTPのみ)
OpenLDAP
...
※Shibbolethでは、通信するサーバ間の時刻のずれが約5分を越えるとエラーになります。
...
アンカー | ||||
---|---|---|---|---|
|
3. jdk
...
8、tomcat 7をインストールする
1. 古いtomcatの削除
tomcat 6以前のバージョンが入っている場合は、削除してください。
2. jdk のインストール
CentOS 6にはOpenJDKのパッケージが用意されていますので、これをyumにてインストールします。7にはOpenJDKのパッケージが用意されていますので、これをyumにてインストールします。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
|
展開 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||
http://java.sun.com/javase/downloads/index.jsp にあります"Java SE 8u??"の項にある"JDK"の項より構築環境に合わせてダウンロードしたパッケージを適当なフォルダに置いて、以下のコマンドを実行してください(??は用意されているjdkのリビジョン番号にあわせて記述して下さい)。
上記のようにインストールした場合、パッケージ名は 加えて、再度上記URLから「Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files for JDK/JRE 8」にある |
3. tomcat 7のインストール
CentOS 6の場合、標準パッケージにはTomcat 7がないため、Apache Software Foundationが配布するTomcatパッケージをダウンロードしてインストールします。
/usr/javaを作成します。https://tomcat.apache.org7の場合、標準パッケージにTomcat 7があるため、yumにてインストールします。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
|
自動起動の設定
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
|
展開 | ||
---|---|---|
| ||
CentOS 6の場合、標準パッケージにはTomcat 7がないため、Apache Software Foundationが配布するTomcatパッケージをダウンロードしてインストールします。 |
...
自動起動スクリプトを利用すると便利です。ZIPを解凍後にtomcat 7起動スクリプトファイルをコピーします。
自動起動の設定 (このオプション指定では マイナス ‘-’ が2つ必要です)
|
4. profileの追加
/etc/profile.d/java-tomcat.sh
という新規ファイルを以下の内容で作成します。
注意 |
---|
下記のJAVA_HOMEは、OpenJDKを使ったパスとなります。 |
コード ブロック | ||
---|---|---|
| ||
# /etc/profile.d/java-tomcat.sh - set Java and Tomcat stuff
JAVA_HOME=/usr/lib/jvm/jre
#export MANPATH=$MANPATH:/usr/java/default/man
CATALINA_HOME=/usr/java/tomcat
CATALINA_BASE=$CATALINA_HOME
PATH=$JAVA_HOME/bin:$CATALINA_BASE/bin:$CATALINA_HOME/bin:$PATH
export PATH JAVA_HOME CATALINA_HOME CATALINA_BASE |
追加した環境変数を読み込みます。
パネル |
---|
|
5. httpd の設定
...
|
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
# useradd -r -d /usr/java/tomcat -s /sbin/nologin -c "Tomcat daemon" tomcat |
ダウンロードした起動スクリプトを使用する場合は以下のように修正します。(
/etc/rc.d/init.d/tomcat7
)
情報 |
---|
もしTomcatが起動していれば、修正前にstopしてください。 |
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
|
パネル | ||||||
---|---|---|---|---|---|---|
|
(省略) ServerName example-idp.nii.ac.jp:80 ←ホスト名 (省略)
/etc/httpd/conf.d/ssl.conf の修正
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
(省略) <VirtualHost _default_:443> (省略) ServerName example-idp.nii.ac.jp:443 ←ホスト名 ProxyPass /idp/ ajp://localhost:8009/idp/ ←追加 (省略) |
情報 | ||
---|---|---|
加えて、SSL 3.0プロトコルに対する攻撃が発見されておりますので、当該プロトコルを無効化することをお勧めします。⇒SSLバージョン3の脆弱性について (CVE-2014-3566)
|
/etc/httpd/conf.d/virtualhost-localhost80.conf
を以下の内容で作成してください。これはShibboleth IdPが提供するreload-metadata.sh等のコマンドを使った操作を可能にするためのものです。
注意 |
---|
すでに同一のvirtual hostを別のところで定義している場合は、そちらに含めてください。また、すでに _default_:80 のVirtualHostが定義されている場合はその中の宣言が localhost:80 に適用されなくなりますので、必要であればその宣言をこのファイルにも含めてください。 _default_:80 が定義されているファイルに下記ProxyPassを含める方法もありますが、外部からの通常のアクセスがセキュアでない80番ポートに対しても行えることになりますので推奨しません。(もちろん、ファイアウォール等で適切に対処されていれば問題ありません) |
パネル |
---|
<VirtualHost localhost:80>
ProxyPass /idp/ ajp://localhost:8009/idp/
</VirtualHost> |
...
$CATALINA_BASE/conf/server.xmlを下記のように修正します。
他の用途で使用する予定がなければConnector port="8080"をコメントアウトしてください。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
<!-- <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> --> |
Connector port="8009"に以下のように追加してください。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
|
...
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
# useradd -r -d /usr/java/tomcat -s /sbin/nologin -c "Tomcat daemon" tomcat |
ダウンロードした起動スクリプトを使用する場合は以下のように修正します。(
/etc/rc.d/init.d/tomcat7
)
情報 |
---|
もしTomcatが起動していれば、修正前にstopしてください。 |
また、Tomcatのpidファイル及び保存されているディレクトリを
|
4. profileの追加
/etc/profile.d/java-tomcat.sh
という新規ファイルを以下の内容で作成します。
注意 |
---|
下記のJAVA_HOMEは、OpenJDKを使ったパスとなります。 |
コード ブロック | ||
---|---|---|
| ||
# /etc/profile.d/java-tomcat.sh
JAVA_HOME=/usr/lib/jvm/jre
#export MANPATH=$MANPATH:/usr/java/default/man
CATALINA_HOME=/usr/share/tomcat
CATALINA_BASE=$CATALINA_HOME
PATH=$JAVA_HOME/bin:$CATALINA_BASE/bin:$CATALINA_HOME/bin:$PATH
export PATH JAVA_HOME CATALINA_HOME CATALINA_BASE |
展開 | |||||
---|---|---|---|---|---|
| |||||
yumでインストールした場合と、rpmからインストールした場合では、ファイルの配置が違います。
|
追加した環境変数を読み込みます。
パネル |
---|
|
5. httpd の設定
/etc/httpd/conf/httpd.conf の修正
パネル | ||||||
---|---|---|---|---|---|---|
|
...
# Remove -XX:MaxPermSize=256m if you are not using Sun/Oracle JVM nor OpenJDK.
export JAVA_OPTS="-server -Xmx512m -XX:MaxPermSize=256m "
export LANG=en_US.UTF-8
TOMCAT_USER=tomcat
(省略) ServerName example-idp.nii.ac.jp:80 ←ホスト名 (省略) |
/etc/httpd/conf.d/ssl.conf の修正
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
(省略) <VirtualHost _default_:443> (省略) ServerName example-idp.nii.ac.jp:443 ←ホスト名 ProxyPass /idp/ ajp://localhost:8009/idp/ ←追加 (省略) |
情報 | ||
---|---|---|
加えて、SSL 3.0プロトコルに対する攻撃が発見されておりますので、当該プロトコルを無効化することをお勧めします。⇒SSLバージョン3の脆弱性について (CVE-2014-3566)
|
/etc/httpd/conf.d/virtualhost-localhost80.conf
を以下の内容で作成してください。これはShibboleth IdPが提供するreload-metadata.sh等のコマンドを使った操作を可能にするためのものです。
注意 |
---|
すでに同一のvirtual hostを別のところで定義している場合は、そちらに含めてください。また、すでに _default_:80 のVirtualHostが定義されている場合はその中の宣言が localhost:80 に適用されなくなりますので、必要であればその宣言をこのファイルにも含めてください。 _default_:80 が定義されているファイルに下記ProxyPassを含める方法もありますが、外部からの通常のアクセスがセキュアでない80番ポートに対しても行えることになりますので推奨しません。(もちろん、ファイアウォール等で適切に対処されていれば問題ありません) |
パネル |
---|
<VirtualHost localhost:80>
ProxyPass /idp/ ajp://localhost:8009/idp/
</VirtualHost> |
6. server.xmlの修正
$CATALINA_BASE/conf/server.xmlを下記のように修正します。
他の用途で使用する予定がなければConnector port="8080"をコメントアウトしてください。
...
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
|
...
パネル | ||||||
---|---|---|---|---|---|---|
|
...
# ls -dl /var/run/tomcat
drwxr-xr-x 2 root root 4096 Jun 20 16:21 /var/run/tomcat
↑このディレクトリが存在し、かつ所有者・グループが
tomcat tomcat
でなければ以下を実行
# chown -R tomcat:tomcat /var/run/tomcat
<!-- <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> --> |
Connector port="8009"に以下のように追加してください。
パネル | |
---|---|
|
...
4. Shibbolethのインストール
各ファイル名等の指定は,Version 3.1.2に準拠しています。
1. Shibboleth IdP パッケージのダウンロード
http://www.shibboleth.net/downloads/identity-provider/latest/から最新版のIdP( shibboleth-identity-provider-3.?.?.zip )をダウンロードします。
情報 |
---|
ダウンロードしたファイルの真正性を確かめるにはPGP署名(ダウンロードURLに".asc"を追加したもの)を確認してください。 |
2. インストール
shibboleth-identity-provider-3.?.?.zip を適当なディレクトリに置いて、以下のコマンドを実行してください。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
# unzip shibboleth-identity-provider-3.?.?.zip
# cd shibboleth-identity-provider-3.?.?
# ./bin/install.sh |
install.shシェルスクリプトを実行すると、以下のような問い合わせがあります。
手順に従って、進めてください。
...
borderColor | #cccccc |
---|---|
bgColor | #eeeeee |
borderStyle | solid |
|
...
アンカー | ||||
---|---|---|---|---|
|
4. Shibbolethのインストール
各ファイル名等の指定は,Version 3.2.1に準拠しています。
1. Shibboleth IdP パッケージのダウンロード
http://www.shibboleth.net/downloads/identity-provider/latest/から最新版のIdP( shibboleth
...
-identity-provider-3.?.
...
?.zip )をダウンロードします。
情報 |
---|
ダウンロードしたファイルの真正性を確かめるにはPGP署名(ダウンロードURLに".asc"を追加したもの)を確認してください。 |
2. インストール
shibboleth-identity-provider-3.?.?.zip を適当なディレクトリに置いて、以下のコマンドを実行してください。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
# unzip shibboleth-identity-provider-3.?.?.zip
# cd shibboleth-identity-provider-3.?.?
# ./bin/install.sh |
install.shシェルスクリプトを実行すると、以下のような問い合わせがあります。
手順に従って、進めてください。
(省略)
BUILD SUCCESSFUL
Total time: 2 minutes 9 seconds
...
3. パーミッションの調整
Tomcatを”tomcat”ユーザで実行する場合は、ログファイルを出力できるようディレクトリの所有者を変更します。
同様に、設定ファイルやメタデータの保存ディレクトリなどの所有者・パーミッションも変更します。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
# chown -R tomcat:tomcat /opt/shibboleth-idp/logs # chgrp -R tomcat
# chmod -R g+r /opt/shibboleth-idp/conf # find /opt/shibboleth-idp/conf -type d -exec chmod -R g+s {} \; # chgrp tomcat /opt/shibboleth-idp/metadata # chmod g+w /opt/shibboleth-idp/metadata # chmod +t /opt/shibboleth-idp/metadata |
4. jakarta-taglibs-core.jar と jakarta-taglibs-standard.jar の配置
|
上記のような質問に答えながら、インストールを行います。
3. パーミッションの調整
Tomcatを”tomcat”ユーザで実行する場合は、ログファイルを出力できるようディレクトリの所有者を変更します。
同様に、設定ファイルやメタデータの保存ディレクトリなどの所有者・パーミッションも変更します。 IdPの動作に必要なjstl.jar(jakarta-taglibs-core.jar と jakarta-taglibs-standard.jar)を配置します。
CentOS6の場合、jakarta-taglibs-standardパッケージに入っているので、 yum でインストールします。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
# yum install jakarta-taglibs-standard |
/usr/share/java 配下にインストールされているので、edit-webapp/
配下にシンボリックリンクを作成し、idp.warに含めます。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
# ln -s /usr/share/java/jakarta-taglibs-core.jarchown -R tomcat:tomcat /opt/shibboleth-idp/logs |
5. idp.war の登録
/metadata |
4. jakarta-taglibs-core.jar と jakarta-taglibs-standard.jar の配置
IdPの動作に必要なjstl.jar(jakarta-taglibs-core.jar と jakarta-taglibs-standard.jar)を配置します。
CentOS6の場合、${CATALINA_BASE}/conf/Catalina/localhost/idp.xml
という新規ファイルを以下の内容で作成し、idp.warをTomcatが認識できるようにします。jakarta-taglibs-standardパッケージに入っているので、 yum でインストールします。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
|
httpdの再起動とTomcatの起動を行います。(すでにTomcatが起動している場合はstopしてから行ってください)
# yum install jakarta-taglibs-standard |
/usr/share/java 配下にインストールされているので、edit-webapp/
配下にシンボリックリンクを作成し、idp.warに含めます。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
パネル | ||||||
| ||||||
# serviceln httpd restart # service tomcat7 start |
Tomcatの起動後、${CATALINA_BASE}/logs/catalina.out にエラーが出力されていない事を確認してください。
※catalina.outにTomcat終了時(再起動時)のタイミングで以下のようなエラーが表示されることがありますが問題ありませんので無視してください。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
致命的: A web application appears to have started a TimerThread named [Timer-0] via the java.util.Timer API but has failed to stop it. To prevent a memory leak, the timer (and hence the associated thread) has been forcibly cancelled. |
-s /usr/share/java/jakarta-taglibs-core.jar |
5. idp.war の登録
${CATALINA_BASE}/conf/Catalina/localhost/idp.xml
という新規ファイルを以下の内容で作成し、idp.warをTomcatが認識できるようにします。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
|
httpdの再起動とTomcatの起動を行います。(すでにTomcatが起動している場合はstopしてから行ってください)
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
# systemctl restart httpd
# systemctl start tomcat |
展開 | |||||||||
---|---|---|---|---|---|---|---|---|---|
| |||||||||
|
Tomcatの起動後、${CATALINA_BASE}/logs/catalina.{日付}.out にエラーが出力されていない事を確認してください。
※catalina.{日付}.outにTomcat終了時(再起動時)のタイミングで以下のようなエラーが表示されることがありますが問題ありませんので無視してください。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
致命的: A web application appears to have started a TimerThread named [Timer-0] via the java.util.Timer API but has failed to stop it | ||||||
パネル | ||||||
| ||||||
致命的: A web application created a ThreadLocal with key of type [null] (value [ch.qos.logback.core.UnsynchronizedAppenderBase$1@XXXXXXXX]) and a value of type [java.lang.Boolean] (value [false]) but failed to remove it when the web application was stopped. To prevent a memory leak, the ThreadLocal has been forcibly removed. |
...
5. サービスの起動・停止方法
httpd の起動方法
service httpd start
timer (and hence the associated thread) has been forcibly cancelled. |
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
致命的: A web application created a ThreadLocal with key of type [null] (value [ch.qos.logback.core.UnsynchronizedAppenderBase$1@XXXXXXXX]) and a value of type [java.lang.Boolean] (value [false]) but failed to remove it when the web application was stopped. To prevent a memory leak, the ThreadLocal has been forcibly removed. |
展開 | ||
---|---|---|
| ||
catalina.{日付}.outではなく、catalina.outに出力されます。 |
...
アンカー idpInst5 idpInst5
5. サービスの起動・停止方法
サービス | 起動コマンド | 停止コマンド | 再起動コマンド |
---|---|---|---|
httpd | systemctl start httpd | systemctl stop httpd | systemctl restart httpd |
tomcat | systemctl start tomcat | systemctl stop tomcat | systemctl restart tomcat |
展開 | |||||||||
---|---|---|---|---|---|---|---|---|---|
| |||||||||
|
...
|
...
httpd の停止方法
service httpd stop
...
|
...
インストールが完了したら,サイト情報等の設定を行って下さい.
...