...
IdPv4のインストール
実習セミナー内に準備されたLinuxサーバにJDK、Tomcat、Shibboleth 実習セミナー内に準備されたLinuxサーバにJDK、Jetty、Shibboleth IdPをインストールする手順となっています。
目次 maxLevel 2 minLevel 2 style none
...
アンカー 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設定が確認できます。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
$ /usr/sbin/getenforce |
...
アンカー seminar-idpInst2 seminar-idpInst2
2. Java 11(OpenJDK)をインストールする
1. インストール
CentOS 7にはOpenJDKのパッケージが用意されていますので、これをyumにてインストールします。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
# yum install java-11-openjdk-headless |
...
アンカー | ||||
---|---|---|---|---|
|
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設定を確認してください。
...
パネル | ||||||
---|---|---|---|---|---|---|
|
...
|
...
|
...
|
サービス起動は、”jetty”ユーザに設定
"root"ユーザではなく、Jetty起動用のユーザを使用することを推奨します。
ここでは、一般的な "jetty" ユーザを作成します。(以降、"jetty"ユーザを使用する事を前提として説明します。)
パネル | |
---|---|
|
・ネットワーク設定
環境に合わせ、ホスト名・ネットワーク・セキュリティを設定して下さい。
2. DNSへ登録する
新しいホスト名とIPアドレスをDNSに登録してください。
3. 時刻同期を設定する
ntpサービスを用い、貴学環境のntpサーバと時刻同期をしてください。
※Shibbolethでは、通信するサーバ間の時刻のずれが約5分を越えるとエラーになります。
...
3. jdk 7、tomcat 7をインストールする(★)
1. 古いtomcatの削除
tomcat 6以前のバージョンが入っている場合は、削除してください。
2. jdk のインストール(★)
CentOS 6にはOpenJDKのパッケージが用意されていますので、これをyumにてインストールします。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
|
展開 | |||||||||
---|---|---|---|---|---|---|---|---|---|
| |||||||||
注意 |
---|
Oracle JDKの公開バージョンは8のみですので、その手順を示します。7と8の間でバージョンをまたぐ場合は前述の通り設定ファイルに記述するスクリプトに一部違いがありますのでご注意ください。 |
http://java.sun.com/javase/downloads/index.jsp にあります"Java SE 8u??"の項にある"JDK"の項より構築環境に合わせてダウンロードしたパッケージを適当なフォルダに置いて、以下のコマンドを実行してください(??は用意されているjdkのリビジョン番号にあわせて記述して下さい)。
#cccccc | |
bgColor | #eeeeee |
borderStyle | solid |
#
上記のようにインストールした場合、パッケージ名は 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.jar
と US_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のリビジョン番号にあわせて記述して下さい)。
ヒント | ||
---|---|---|
| ||
・Tomcat7のパッケージと自動起動スクリプトは、「/root/PKG」配下にあります。 |
|
(上の手順でディレクトリ作成済みのため警告が出ますが問題ありません)
以下のコマンドでその他 Jetty 関連の設定ファイルやディレクトリの所有者、パーミッションを設定します。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
|
自動起動スクリプトは、以下のように作成します。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
|
jetty.serviceについては、コピー後に以下のように[Service]部分を修正します。
パネル | ||||||
---|---|---|---|---|---|---|
パネル | ||||||
| ||||||
# mkdir /usr/java |
自動起動スクリプトを利用すると便利です。ZIPを解凍後にtomcat 7起動スクリプトファイルをコピーします。
| ||
展開 | ||
---|---|---|
| ||
ファイル内にJAVA_HOME、CATALINA_HOMEおよびCATALINA_BASEが定義されておりますので、「4. profileの修正」を参考に環境に合わせて変更してください。 Oracle(Sun) JVM / OpenJDK 以外をご使用の方は定義されているオプションを適宜調整してください。 |
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
# unzip tomcat7.zip
# chmod a+x tomcat7
# cp tomcat7 /etc/rc.d/init.d/ |
|
以下を実行して、修正した内容を反映させます。自動起動の設定 (このオプション指定では マイナス ‘-’ が2つ必要です)
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
|
4. profileの追加(★)
/etc/profile.d/java-tomcat.sh
という新規ファイルを以下の内容で作成します。
注意 |
---|
下記のJAVA_HOMEは、OpenJDKを使ったパスとなります。 |
|
以下の内容で/etc/sysconfig/jettyを作成します。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
| ||||||
コード ブロック | ||||||
| ||||||
# /etc/profile.d/java-tomcat.sh - set Java and Tomcat stuff
JAVA_HOME
|
追加した環境変数を読み込みます。
パネル |
---|
|
5. httpd の設定(★)
ヒント | ||
---|---|---|
| ||
・ここで設定するホスト名は、各自IdPサーバのホスト名を設定してください。 |
...
|
2. 自動起動の設定
以下のコマンドで自動起動設定を有効にします。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
|
3. jetty-baseの設定
以下のように関連する設定ファイルの作成や修正を行います。
/opt/jetty-base/webapps/idp.xml の修正
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
(省略) 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> |
...
|
/opt/jetty-base/start.d/idp-backchannel.ini を無効化
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
|
/opt/jetty-base/start.d/start.ini の作成
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
<!-- <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> --> |
Connector port="8009"に以下のように追加してください。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
|
...
|
...
/opt/jetty-base/start.d/idp.ini の修正
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
|
...
|
/opt/jetty-base/modules/idp.mod の修正
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
|
/opt/jetty-base/etc/tweak-ssl.xml の作成
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
|
上記ファイルを参照するように /opt/jetty-base/modules/idp-backchannel.mod に追記します。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
(省略) |
4. httpd の設定
以下のように設定ファイルの修正を行います。
/etc/httpd/conf/httpd.conf の修正
ダウンロードした起動スクリプトを使用する場合は以下のように修正します。(
/etc/rc.d/init.d/tomcat7
)
情報 |
---|
もしTomcatが起動していれば、修正前にstopしてください。 |
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
|
...
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
|
また、Tomcatのpidファイル及び保存されているディレクトリを ls -dl
等で所有者・パーミッションを確認の上、必要なら変更してください。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
|
...
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 IdPのパッケージは、「/root/PKG」配下にあります。 |
...
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
|
install.shシェルスクリプトを実行すると、以下のような問い合わせがあります。
手順に従って、進めてください。
ServerName ex-idp-test??.gakunin.nii.ac.jp:80 ← ??は各自割り振られた番番号(0番なら「00」) |
/etc/httpd/conf.d/ssl.conf の修正
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
| ||||||
ヒント | ||||||
| ||||||
・Hostnameは、設定しなくても設定されているはずです。 |
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
|
...
3. パーミッションの調整(★)
:443 ← ??は各自割り振られた番号(0番なら「00」) |
/etc/httpd/conf.d/virtualhost-localhost80.conf の作成
※これはShibboleth IdPが提供するreload-metadata.sh等のコマンドを使った操作を可能にするためのものです。
パネル | ||
---|---|---|
| ||
|
...
アンカー | ||||
---|---|---|---|---|
|
4. Shibbolethのインストール
各ファイル名等の指定は,Version 4.2.1に準拠しています。
1. インストール
Shibboleth IdPのパッケージは、「/root/PKG」配下にあります。
以下のコマンドで移動してください。Tomcatを”tomcat”ユーザで実行する場合は、ログファイルを出力できるようディレクトリの所有者を変更します。
同様に、設定ファイルやメタデータの保存ディレクトリなどの所有者・パーミッションも変更します。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
# cd /root/PKG |
shibboleth-identity-provider-4.?.?.tar.gz がすでに配置されているので、以下のコマンドを実行してください。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
|
install.shシェルスクリプトを実行すると、以下のような問い合わせがあります。
手順に従って、進めてください。
注意 |
---|
インストール時に入力するパスワードを本運用で使う場合は、推測されにくいものを使用してください。 # 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のほう) |
4. jakarta-taglibs-core.jar と jakarta-taglibs-standard.jar の配置(★)
...
credentials/idp-backchannel.p12の暗号化のために使用されます。(本技術ガイドではidp-backchannel.p12を使用しません) |
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
# yum install jakarta-taglibs-standard |
/usr/share/java 配下にインストールされているので、edit-webapp/
配下にシンボリックリンクを作成し、idp.warに含めます。
...
borderColor | #cccccc |
---|---|
bgColor | #eeeeee |
borderStyle | solid |
Re-enter password: backpass[Enter]
|
上記のような質問に答えながら、インストールを行います。
2. パーミッションの調整
Jettyは、”jetty”ユーザで実行しているので、ログファイルを出力できるようディレクトリの所有者を変更します。
同様に、設定ファイルやメタデータの保存ディレクトリなどの所有者・パーミッションも変更します。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
|
ヒント |
---|
IdPが実際に使用する証明書の秘密鍵はまだ配置されておりませんので、所有者・パーミッションは後の手順で設定します。 |
アンカー | ||||
---|---|---|---|---|
|
3. jstl-1.2.jar の配置
※jstlの別途インストールは不要
4. ディレクトリインデックスの禁止
edit-webapp内にweb.xml を作成します。
...
5. idp.war の登録(★)
${CATALINA_BASE}/conf/Catalina/localhost/idp.xml
という新規ファイルを以下の内容で作成し、idp.warをTomcatが認識できるようにします。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
|
httpdの再起動とTomcatの起動を行います。(すでにTomcatが起動している場合はstopしてから行ってください)
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
# 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.||||||
|
作成したweb.xml を以下の内容で修正します。
※既存の<servlet>の前に設定を追加します。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
|
以下を実行して反映させます。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
|
build.shシェルスクリプトを実行すると、以下のような問い合わせがあります。
手順に従って、進めてください。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
致命的: 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 (起動スクリプトを利用しない場合)
(省略) |
httpdの再起動とJettyの起動を行います。(すでにJettyが起動している場合はstopしてから行ってください)
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
# systemctl restart httpd
# systemctl start jetty |
注意 |
---|
Jettyに関する注意事項
|
...
アンカー idpInst5 idpInst5
5. サービスの起動・停止方法
サービス | 起動コマンド | 停止コマンド | 再起動コマンド |
---|---|---|---|
httpd | systemctl start httpd | systemctl stop httpd | systemctl restart httpd |
jetty | systemctl start jetty | systemctl stop jetty | systemctl restart jetty |
...
...
インストールが完了したら,サイト情報等の設定を行って下さい.
...