比較バージョン

キー

  • この行は追加されました。
  • この行は削除されました。
  • 書式設定が変更されました。

...

IdPv4のインストール

実習セミナー内に準備されたLinuxサーバにJDK、Tomcat、Shibboleth 実習セミナー内に準備されたLinuxサーバにJDK、Jetty、Shibboleth IdPをインストールする手順となっています。


目次
maxLevel2
minLevel2
stylenone


...

アンカー
seminar-idpInst1
seminar-idpInst1

1.

...

実習に使用する仮想サーバについて

以下は本技術ガイドで構築する前提となる環境です。

  • OS、DNS、ネットワーク、時刻同期などは設定済みとなっています。(Apache HTTP Server、mod_sslもインストール済み)
  • CentOS7
  • メモリ2GB以上
    Java実行環境への推奨割り当てメモリ量が1.5GBですので、その動作に支障がないようにしてください。
  • Apache HTTP Server 2.2 以上 と 4 と mod_ssl

以下のパッケージはインストール方法も含めて以降の手順で説明します。

  • Apache Tomcat 7 or 8
    • 8.5はセッションのバグにより不安定になるという情報があります。
    • JMXを初期化前に使うと動作がおかしくなります。
      ※いずれも以下のShibbolethのサイト「Apache Tomcat 8」が情報源です。
  • Java 7 or 8
    • GNU Javaは利用できません。 OracleのJavaもしくはOpenJDKを利用してください。
    • IdPv2からの移行でかつ attribute-resolver.xml / attribute-filter.xml でスクリプトを使っている場合、引き続きJava 7(OpenJDK 7)の使用を推奨します。(ただしIdPv2でJava 8を使っていた場合、引き続きJava 8(Oracle JDK 8 / OpenJDK 8)を使用してください)
      Java 7とJava 8でスクリプトの書き方に若干の違いがあります。(書き方の違いの例
      詳細(Shibboleth Wiki): ScriptedAttributeDefinition, ScriptConfiguration, ScriptDataConnector
      v2版: IdPJava1.8, ResolverScriptAttributeDefinition, IdPFilterRequirementScript
      (基本的にIdPv3での説明はJava 8(Nashorn)がメインでJava 7(Rhino)も併記、v2版は特に断りがなければJava 7(Rhino)での表記となっています)
    • Java 8を使う場合エントロピー不足で起動が遅くなる場合があるという情報があります。jre/lib/security/java.securityやシステムプロパティ等で対処してください。
      詳細(Shibboleth Wiki): Installation, Troubleshooting > Slow startup time

...

  • Java 11(OpenJDK)
  • Jetty 9.4
  • Shibboleth IdP v4

また、実習環境ではSELinuxは無効化されているものとして手順を記載しています。下記コマンドでSELinux設定が確認できます。

パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid
$ /usr/sbin/getenforce


...

アンカー
seminar-idpInst2
seminar-idpInst2

2. Java 11(OpenJDK)をインストールする

1. インストール

CentOS 7にはOpenJDKのパッケージが用意されていますので、これをyumにてインストールします。

パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid
# yum install java-11-openjdk-headless


...

アンカー
seminar-idpInst3
seminar-idpInst3

3. Jetty 9.4 をインストールする

1. インストール

CentOS 7にはJettyのパッケージがないので、ダウンロードしてインストールします。
実習セミナーでは予めダウンロードした「/root/PKG」内の、jetty-distribution-9.4.*.v????????.tar.gz を使います。
さらに、Shibboleth Projectが配布している各種設定ファイル群(jetty-base)を配置します。
こちらも予め「/root/PKG」内に配置してあるものを使用します。

...

2. OSをインストールする

1. OSでの設定

・OS(CentOS 6)インストール

インストーラでインストールするもの。

Webサーバー (HTTPのみ)
OpenLDAP

その他のパッケージは必要に応じてインストールしてください。
ただし、Java開発とTomcat は後の手順で別にインストールします。

運用フェデレーション参加後に、ホスト名を変更する場合はいくつか考慮・解決すべき点があります。ホスト名は十分ご検討いただいた上で設定してください。詳しくは IdPのホスト名変更に関する注意点 をご参照ください。
※このテキストはSELinuxは無効化されているものとして書かれております。下記コマンドでSELinux設定を確認してください。

...

パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid

...

# cd /

...

root/

...

PKG
# tar zxv -C /opt -f jetty-distribution-9.4.*.v????????.tar.gz
# ( cd /opt ; ln -s jetty-distribution-9.4.*.v???????? /opt/jetty )
# tar zxv -C /opt -f idp-jetty-base-9.4.?.tar.gz


サービス起動は、”jetty”ユーザに設定

"root"ユーザではなく、Jetty起動用のユーザを使用することを推奨します。
ここでは、一般的な "jetty" ユーザを作成します。(以降、"jetty"ユーザを使用する事を前提として説明します。)

パネル
borderColor

 

・ネットワーク設定

 環境に合わせ、ホスト名・ネットワーク・セキュリティを設定して下さい。

2. DNSへ登録する

 新しいホスト名とIPアドレスをDNSに登録してください。

3. 時刻同期を設定する

 ntpサービスを用い、貴学環境のntpサーバと時刻同期をしてください。

 ※Shibbolethでは、通信するサーバ間の時刻のずれが約5分を越えるとエラーになります。

 

...

3. jdk 7、tomcat 7をインストールする(★)

1. 古いtomcatの削除

tomcat 6以前のバージョンが入っている場合は、削除してください。

2. jdk のインストール(★)

CentOS 6にはOpenJDKのパッケージが用意されていますので、これをyumにてインストールします。

パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid
# yum install java-1.7.0-openjdk
展開
titleOracleのJavaを使用する場合
注意

Oracle JDKの公開バージョンは8のみですので、その手順を示します。7と8の間でバージョンをまたぐ場合は前述の通り設定ファイルに記述するスクリプトに一部違いがありますのでご注意ください。

http://java.sun.com/javase/downloads/index.jsp にあります"Java SE 8u??"の項にある"JDK"の項より構築環境に合わせてダウンロードしたパッケージを適当なフォルダに置いて、以下のコマンドを実行してください(??は用意されているjdkのリビジョン番号にあわせて記述して下さい)。

パネルborderColor
#cccccc
bgColor#eeeeee
borderStylesolid

#

rpm -ivh jdk-8u??-linux-x64.rpm

上記のようにインストールした場合、パッケージ名は jdk1.8.0_??-1.8.0_??-fcs 、インストールパスは /usr/java/jdk1.8.0_??/ になります。後述のJAVA_HOMEには /usr/java/jdk1.8.0_??/jre もしくは等価なシンボリックリンクを指定してください。

加えて、再度上記URLから「Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files for JDK/JRE 8」にある jce_policy–8.zip をダウンロードし、展開したREADME.txtに従って /usr/java/jdk1.8.0_??/jre/lib/security/local_policy.jarUS_export_policy.jar を(オリジナルをリネームした上で)配置してください。

 

3. tomcat 7のインストール(★)

CentOS 6の場合、標準パッケージにはTomcat 7がないため、Apache Software Foundationが配布するTomcatパッケージをダウンロードしてインストールします。
/usr/javaを作成します。https://tomcat.apache.org/download-70.cgi よりダウンロードした apache-tomcat-7.?.??.tar.gz を/usr/javaに置いて、
以下のコマンドを実行してください(?は用意されているtomcatのリビジョン番号にあわせて記述して下さい)。

ヒント
title実習セミナー

・Tomcat7のパッケージと自動起動スクリプトは、「/root/PKG」配下にあります。
 以下のコマンドで移動して、以降の手順を実施してください。
 # cd /root/PKG 

groupadd -g 110 jetty
# useradd -u 110 -g jetty -d /opt/jetty-base -s /sbin/nologin -c "Jetty daemon" jetty
useradd: 警告: ホームディレクトリが既に存在します。
skel ディレクトリからのコピーは行いません。

もしくは、
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.

(上の手順でディレクトリ作成済みのため警告が出ますが問題ありません)
以下のコマンドでその他 Jetty 関連の設定ファイルやディレクトリの所有者、パーミッションを設定します。

パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid

# chown -R root:root /opt/jetty-distribution-9.4.*.v???????? /opt/jetty-base
# chmod -R g-w /opt/jetty-base
# chown jetty:jetty /opt/jetty-base/{logs,tmp}

自動起動スクリプトは、以下のように作成します。

パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid

# cp -ip /opt/jetty/bin/jetty.sh /etc/init.d/jetty
# cp -ip /opt/jetty/bin/jetty.service /etc/systemd/system/

jetty.serviceについては、コピー後に以下のように[Service]部分を修正します。

パネル
パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid
# mkdir /usr/java
# tar zxv -C /usr/java -f apache-tomcat-7.?.??.tar.gz # ln -s /usr/java/apache-tomcat-7.?.?? /usr/java/tomcat

自動起動スクリプトを利用すると便利です。ZIPを解凍後にtomcat 7起動スクリプトファイルをコピーします。

[Service]
Type=forking
EnvironmentFile=-/etc/sysconfig/jetty
PIDFile=/opt/jetty-base/tmp/jetty.pid
ExecStart=/etc/init.d/jetty start
ExecStop=

展開
title学認提供自動起動スクリプトについて

/etc/init.d/tomcat7 を更新する場合はTomcat停止後に行なうのがお勧めです。そうでないとPIDファイル等に不整合が生じます。

ファイル内にJAVA_HOME、CATALINA_HOMEおよびCATALINA_BASEが定義されておりますので、「4. profileの修正」を参考に環境に合わせて変更してください。

Oracle(Sun) JVM / OpenJDK 以外をご使用の方は定義されているオプションを適宜調整してください。

パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid
# unzip tomcat7.zip
# chmod a+x tomcat7
# cp tomcat7 /etc/rc.d/init.d/

jetty stop
ExecReload=/etc/init.d/jetty restart
SuccessExitStatus=143
User=jetty
Group=jetty
TimeoutStartSec=150

以下を実行して、修正した内容を反映させます。自動起動の設定 (このオプション指定では マイナス ‘-’ が2つ必要です)

パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid

#

chkconfig --add tomcat7 # chkconfig --level 345 tomcat7 on

4. profileの追加★)

/etc/profile.d/java-tomcat.sh という新規ファイルを以下の内容で作成します。

注意

下記のJAVA_HOMEは、OpenJDKを使ったパスとなります。
またCATALINA_HOMEおよびCATALINA_BASEは、Apache Software Foundationが配布するTomcatパッケージをインストールした場合のパスとなります。
環境に合わせて変更してください。

systemctl daemon-reload

以下の内容で/etc/sysconfig/jettyを作成します。

パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid

JAVA

コード ブロック
languagebash
# /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

/bin/java
JETTY_HOME=/

usr/java/tomcat CATALINA

opt/jetty
JETTY_BASE=

$CATALINA_HOME PATH=$JAVA_HOME/bin:$CATALINA_BASE/bin:$CATALINA_HOME/bin:$PATH export PATH JAVA_HOME CATALINA_HOME CATALINA_BASE

追加した環境変数を読み込みます。

パネル

# source /etc/profile

 

5.  httpd の設定(★)

ヒント
title実習セミナー

・ここで設定するホスト名は、各自IdPサーバのホスト名を設定してください。
 例)1番を割り振られた場合
   ex-idp-test01.gakunin.nii.ac.jp

...

/opt/jetty-base
JETTY_RUN=/opt/jetty-base/tmp
JETTY_STATE=/opt/jetty-base/tmp/jetty.state
JETTY_START_TIMEOUT=120


2. 自動起動の設定

以下のコマンドで自動起動設定を有効にします。

パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid

# systemctl enable jetty

補足:
以下のコマンドで自動起動設定を無効にすることができます。
# systemctl disable jetty


3. jetty-baseの設定 

以下のように関連する設定ファイルの作成や修正を行います。

/opt/jetty-base/webapps/idp.xml の修正
パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid
(省略)
ServerName example-idp.nii.ac.jp:80 ←ホスト名
(省略)

 /etc/httpd/conf.d/ssl.conf の修正

パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid
(省略) 
<VirtualHost _default_:443>
(省略)
ServerName example-idp.nii.ac.jp:443 ←ホスト名
ProxyPass /idp/ ajp://localhost:8009/idp/    ←追加
(省略)
情報

加えて、SSL 3.0プロトコルに対する攻撃が発見されておりますので、当該プロトコルを無効化することをお勧めします。⇒SSLバージョン3の脆弱性について (CVE-2014-3566)

パネル

SSLProtocol all -SSLv2 -SSLv3

/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>

...

<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<Set name="war"><SystemProperty name="idp.war.path" default="/opt/shibboleth-idp/war/idp.war" /></Set>
<Set name="contextPath"><SystemProperty name="idp.context.path" default="/idp" /></Set>
<Set name="extractWAR">false</Set>
<Set name="copyWebDir">false</Set>
<Set name="copyWebInf">true</Set>
</Configure>

/opt/jetty-base/start.d/idp-backchannel.ini を無効化
パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid

# mv -i /opt/jetty-base/start.d/idp-backchannel.ini /opt/jetty-base/start.d/idp-backchannel.ini.dist

/opt/jetty-base/start.d/start.ini の作成
パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid
<!--
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
-->

 Connector port="8009"に以下のように追加してください。

パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"
           enableLookups="false" tomcatAuthentication="false" address="127.0.0.1" maxPostSize="100000" />

...

# Any other required Jetty modules...

# Allows setting Java system properties (-Dname=value)
# and JVM flags (-X, -XX) in this file
# NOTE: spawns child Java process
--exec

# Uncomment if IdP is installed somewhere other than /opt/shibboleth-idp
#-Didp.home=/path/to/shibboleth-idp

# Newer garbage collector that reduces memory needed for larger metadata files
-XX:+UseG1GC

# Maximum amount of memory that Jetty may use, at least 1.5G is recommended
# for handling larger (> 25M) metadata files but you will need to test on
# your particular metadata configuration
-Xmx1500m

# Prevent blocking for entropy.
-Djava.security.egd=file:/dev/./urandom

# Set Java tmp location
-Djava.io.tmpdir=tmp

...

/opt/jetty-base/start.d/idp.ini の修正

パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid

#

...

---------------------------------------
# Module: idp
# Shibboleth IdP
# ---------------------------------------
--module=idp
--module=http
--module=http-forwarded

## Keystore file path (relative to $jetty.base)
jetty.sslContext.keyStorePath=../credentials/idp-userfacing.p12


(省略)

※末尾に以下を追加

## Connector port to listen on
jetty.ssl.port=443  ※利用されない
jetty.http.host=127.0.0.1
jetty.http.port=8080

/opt/jetty-base/modules/idp.mod の修正
パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid

[depend]
annotations
deploy
ext
#https
jsp
jstl
plus
resources
server
servlets
#ssl

/opt/jetty-base/etc/tweak-ssl.xml の作成
パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid

<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN"
"http://www.eclipse.org/jetty/configure_9_4.dtd">
<Configure id="shibContextFactory" class="org.eclipse.jetty.util.ssl.SslContextFactory">
<Set name="IncludeProtocols">
<Array type="String">
<Item>TLSv1.3</Item>
<Item>TLSv1.2</Item>
</Array>
</Set>
<Set name="ExcludeProtocols">
<Array type="String">
<Item>TLSv1.1</Item>
<Item>TLSv1</Item>
<Item>SSL</Item>
<Item>SSLv2</Item>
<Item>SSLv3</Item>
</Array>
</Set>
<Set name="IncludeCipherSuites">
<Array type="String">
<Item>TLS_ECDHE.*</Item>
<Item>TLS_AES.*</Item>
<Item>TLS_RSA.*</Item>
</Array>
</Set>
<Set name="ExcludeCipherSuites">
<Array type="String">
<Item>.*NULL.*</Item>
<Item>.*RC4.*</Item>
<Item>.*MD5.*</Item>
<Item>.*DES.*</Item>
<Item>.*DSS.*</Item>
<Item>TLS_DHE.*</Item>
</Array>
</Set>
</Configure>

上記ファイルを参照するように /opt/jetty-base/modules/idp-backchannel.mod に追記します。

パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid

(省略)

[xml]
etc/idp-backchannel.xml
etc/tweak-ssl.xml


4. httpd の設定

以下のように設定ファイルの修正を行います。

/etc/httpd/conf/httpd.conf の修正
 また、起動スクリプトを修正し、"tomcat"ユーザで起動するようにします。
ダウンロードした起動スクリプトを使用する場合は以下のように修正します。(
/etc/rc.d/init.d/tomcat7 

 

情報

もしTomcatが起動していれば、修正前にstopしてください。

パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid

# 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

...

パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid

# chown -R tomcat:tomcat /usr/java/tomcat/{temp,logs,work}
# chown tomcat:tomcat /usr/java/tomcat/webapps
# chmod +t /usr/java/tomcat/webapps
# chgrp tomcat /usr/java/tomcat/conf/*.*
# chmod g+r /usr/java/tomcat/conf/*.*
# mkdir -p /usr/java/tomcat/conf/Catalina/localhost

また、Tomcatのpidファイル及び保存されているディレクトリを ls -dl 等で所有者・パーミッションを確認の上、必要なら変更してください。

パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid

# 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

 

...

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. インストール(★)

ヒント
title実習セミナー

・Shibboleth IdPのパッケージは、「/root/PKG」配下にあります。
 以下のコマンドで移動して、以降の手順を実施してください。
 # cd /root/PKG

...

パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid

(省略)
#

unzip shibboleth-identity-provider-3.?.?.zip # cd shibboleth-identity-provider-3.?.? # ./bin/install.sh

 install.shシェルスクリプトを実行すると、以下のような問い合わせがあります。
手順に従って、進めてください。

ServerName ex-idp-test??.gakunin.nii.ac.jp:80 ← ??は各自割り振られた番番号(0番なら「00」
↑コメントアウト(#)を削除
(省略)

/etc/httpd/conf.d/ssl.conf の修正
パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid

(省略)
<VirtualHost _default_:443>

(省略)
#ServerName ex-idp-test??

ヒント
title実習セミナー

Hostnameは、設定しなくても設定されているはずです。
 各自IdPサーバのホスト名が設定されていることを確認します。
 例)1番を割り振られた場合
   ex-idp-test01.gakunin.nii.ac.jp
Attribute Scopeは、「gakunin.nii.ac.jp」が設定されているので「nii.ac.jp」を入力して設定してください。

パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid

Source (Distribution) Directory: [/root/PKG/shibboleth-identity-provider-3.1.2]
[Enter] ←入力なし
Installation Directory: [/opt/shibboleth-idp]
[Enter] ←入力なし
Hostname: [upkishib-idp.nii.ac.jp]

[Enter] 入力なし ※表示されたホスト名が違う場合、設定してください。
SAML EntityID: [https://upkishib-idp.nii.ac.jp/idp/shibboleth]
[Enter] ←入力なし
Attribute Scope: [nii.ac.jp]
[Enter] ←入力なし ※表示されたスコープが違う場合、設定してください。
TLS Private Key Password: tlspass[Enter] ←任意のパスワード
Re-enter password: tlspass[Enter]
Cookie Encryption Key Password: cookiepass[Enter] ←任意のパスワード
Re-enter password: cookiepass[Enter]

 (省略)

BUILD SUCCESSFUL
Total time: 2 minutes 9 seconds

...

3. パーミッションの調整(★) 

:443 ← ??は各自割り振られた番号(0番なら「00」
↑コメントアウト(#)を削除
↓以下を追加
RequestHeader set X-Forwarded-Port 443
RequestHeader set X-Forwarded-Proto https

RequestHeader unset Forwarded
RequestHeader unset X-Forwarded-For
ProxyPass /idp/ http://localhost:8080/idp/ connectiontimeout=5 timeout=15

(省略)

/etc/httpd/conf.d/virtualhost-localhost80.conf の作成

これはShibboleth IdPが提供するreload-metadata.sh等のコマンドを使った操作を可能にするためのものです。

パネル
bgColor#eeeeee

<VirtualHost localhost:80>
ProxyPass /idp/ http://localhost:8080/idp/ connectiontimeout=5 timeout=15
</VirtualHost>


...

アンカー
idpInst4
idpInst4

4. Shibbolethのインストール 

各ファイル名等の指定は,Version 4.2.1に準拠しています。

1.   インストール

Shibboleth IdPのパッケージは、「/root/PKG」配下にあります。

以下のコマンドで移動してください。Tomcatを”tomcat”ユーザで実行する場合は、ログファイルを出力できるようディレクトリの所有者を変更します。
同様に、設定ファイルやメタデータの保存ディレクトリなどの所有者・パーミッションも変更します。

パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid
# cd /root/PKG

 shibboleth-identity-provider-4.?.?.tar.gz がすでに配置されているので、以下のコマンドを実行してください。

パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid

# tar xzvf shibboleth-identity-provider-4.?.?.tar.gz
# cd shibboleth-identity-provider-4.?.?
# ./bin/install.sh -Didp.conf.credentials.filemode=640 -Didp.conf.credentials.group=jetty

 install.shシェルスクリプトを実行すると、以下のような問い合わせがあります。
手順に従って、進めてください。

注意

インストール時に入力するパスワードを本運用で使う場合は、推測されにくいものを使用してください。
※ここで入力したパスワードは、

chown -R tomcat:tomcat /opt/shibboleth-idp/logs
# chgrp -R tomcat /opt/shibboleth-idp/conf
# 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

credentials/secrets.propertiesに記載されます。(平文)(cookiepassのほう)
※backpassのほうは記載されません。/opt/shibboleth-idp/

metadata

 

4jakarta-taglibs-core.jar と jakarta-taglibs-standard.jar の配置★)

...

credentials/idp-backchannel.p12の暗号化のために使用されます。(本技術ガイドではidp-backchannel.p12を使用しません)

パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid
# yum install jakarta-taglibs-standard

/usr/share/java 配下にインストールされているので、edit-webapp/ 配下にシンボリックリンクを作成し、idp.warに含めます。

...

borderColor#cccccc
bgColor#eeeeee
borderStylesolid

Buildfile: /root/PKG/shibboleth-identity-provider-4.2.1/bin/build.xml

install:
Source (Distribution) Directory (press <enter> to accept default): [/root/PKG/shibboleth-identity-provider-4.3.1] ?
[Enter] ←入力なし

Installation Directory: [/opt/shibboleth-idp] ?
[Enter] ←入力なし
New Install. Version: 4.3.1
Hostname: [ip-??-?-?-???.ap-northeast-1.compute.internal]

ex-idp-test??.gakunin.nii.ac.jp[Enter] ??は各自割り振られた番号(0番なら「00」
 (省略)
Backchannel PKCS12 Password: backpass[Enter] ←任意のパスワード(不使用)

Re-enter password: backpass[Enter]

 (省略)
Cookie Encryption Key Password: cookiepass[Enter] ←任意のパスワード(内部で使用)
Re-enter password: cookiepass[Enter]
 (省略)
SAML EntityID: [https://
ex-idp-test??.gakunin.nii.ac.jp/idp/shibboleth] ?
[Enter] ←入力なし
Attribute Scope: [
gakunin.nii.ac.jp]
nii.ac.jp [Enter] nii.ac.jpを設定してください。

 (省略)

BUILD SUCCESSFUL

 (省略)

 上記のような質問に答えながら、インストールを行います。

2. パーミッションの調整 

Jettyは、”jetty”ユーザで実行しているので、ログファイルを出力できるようディレクトリの所有者を変更します。
同様に、設定ファイルやメタデータの保存ディレクトリなどの所有者・パーミッションも変更します。

パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid

# chown -R jetty:jetty /opt/shibboleth-idp/logs
# chgrp jetty /opt/shibboleth-idp/metadata
# chmod g+w /opt/shibboleth-idp/metadata
# chmod +t /opt/shibboleth-idp/metadata

ヒント

IdPが実際に使用する証明書の秘密鍵はまだ配置されておりませんので、所有者・パーミッションは後の手順で設定します。


アンカー
jakarta-taglibs-core.jar_jakarta-taglibs-standard.jar
jakarta-taglibs-core.jar_jakarta-taglibs-standard.jar

3jstl-1.2.jar の配置 

 ※jstlの別途インストールは不要


4. ディレクトリインデックスの禁止

edit-webapp内にweb.xml を作成します。

...

5. idp.war の登録(★)

${CATALINA_BASE}/conf/Catalina/localhost/idp.xml という新規ファイルを以下の内容で作成し、idp.warをTomcatが認識できるようにします。

パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid

<Context docBase="/opt/shibboleth-idp/war/idp.war"
         privileged="true"
         antiResourceLocking="false"
         swallowOutput="true">
  <Manager pathname="" />
</Context>

 httpdの再起動とTomcatの起動を行います。(すでにTomcatが起動している場合はstopしてから行ってください)

パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid
# service 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.
パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid

# cp -ip /opt/shibboleth-idp/dist/webapp/WEB-INF/web.xml /opt/shibboleth-idp/edit-webapp/WEB-INF/web.xml
# chmod u+w /opt/shibboleth-idp/edit-webapp/WEB-INF/web.xml

作成したweb.xml を以下の内容で修正します。

※既存の<servlet>の前に設定を追加します。

パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid

<filter-mapping>
<filter-name>SLF4JMDCServletFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<!-- Servlets and servlet mappings -->
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.eclipse.jetty.servlet.DefaultServlet</servlet-class>
<init-param>
<param-name>dirAllowed</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>

<servlet>
<servlet-name>idp</servlet-name>

以下を実行して反映させます。

パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid

# /opt/shibboleth-idp/bin/build.sh

 build.shシェルスクリプトを実行すると、以下のような問い合わせがあります。
手順に従って、進めてください。

パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid
致命的: 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

tomcat の起動方法

service tomcat7 start 
sh /usr/java/tomcat/bin/startup.sh (起動スクリプトを利用しない場合)

httpd の停止方法

service httpd stop

tomcat の停止方法

service tomcat7 stop
sh /usr/java/tomcat/bin/shutdown.sh (起動スクリプトを利用しない場合)

Buildfile: /opt/shibboleth-idp/bin/build.xml

build-war:
Installation Directory: [/opt/shibboleth-idp] ?
[Enter] ←入力なし

Rebuilding /opt/shibboleth-idp/war/idp.war, Version 4.3.1
Initial populate from /opt/shibboleth-idp/dist/webapp to /opt/shibboleth-idp/webpapp.tmp
Overlay from /opt/shibboleth-idp/edit-webapp to /opt/shibboleth-idp/webpapp.tmp
Creating war file /opt/shibboleth-idp/war/idp.war


BUILD SUCCESSFUL

(省略)


httpdの再起動とJettyの起動を行います。(すでにJettyが起動している場合はstopしてから行ってください)

パネル
borderColor#cccccc
bgColor#eeeeee
borderStylesolid
# systemctl restart httpd
# systemctl start jetty
注意

Jettyに関する注意事項

  • jetty起動に失敗したら設定修正後、/opt/jetty-base/tmp/下にファイルが残っていたら削除してから再度起動してください。
  • build.shしたら sudo systemctl restart jetty しないと反映されません。


...

アンカー
idpInst5
idpInst5

5. サービスの起動・停止方法

サービス起動コマンド停止コマンド再起動コマンド
httpdsystemctl start httpdsystemctl stop httpdsystemctl restart httpd
jettysystemctl start jettysystemctl stop jettysystemctl restart jetty

...


...

インストールが完了したら,サイト情報等の設定を行って下さい.

...