サーバ証明書の取得とApacheの設定(★)
1.「UPKIオープンドメイン証明書自動発行検証プロジェクト」の利用の手引における加入者編をご覧いただき、サーバ証明書を申請します。機関の審査手続きによっては証明書の交付までには数日を要する場合がありますので、お早めに申請してください。
接続実験をするだけであれば、IdPインストール時に作成された証明書(自己署名証明書)をそのまま利用してテストフェデレーションに参加することも可能です。その場合は、以降の記述のうち「中間CA証明書」の部分は無視してください。
・証明書は、初期設定で「/root/GETFILE」に取得したファイルを使用します。 サーバ証明書:server.crt 秘密鍵:server.key 中間CA証明書:server-chain.crt
上記ファイルを使用して、以降の設定(ssl.conf)を行ってください。 |
2.入手したサーバ証明書をもとに、以下のファイルに設定してください。(★)
■/etc/httpd/conf.d/ssl.conf(★)
・各証明書と秘密鍵を「/root/GETFILE」配下よりコピーしてください。 # cp /root/GETFILE/server{,-chain}.crt /etc/pki/tls/certs/ # cp /root/GETFILE/server.key /etc/pki/tls/private/ |
/etc/httpd/conf.d/ssl.conf を以下のように編集してください。(★)
(省略)
SSLCertificateFile /etc/pki/tls/certs/server.crt ← サーバ証明書の格納先 (省略)
SSLCertificateKeyFile /etc/pki/tls/private/server.key ← 秘密鍵の格納先 (省略)
SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt ← 中間CA証明書の格納先 ↑ 先頭の「#」を削除して、コメントを解除してください。 |
※端末のサイズによっては表記がずれる可能性がございます。画面を広くしてご覧ください。
詳しくは、サーバ証明書インストールマニュアルの Apache 2 + mod_ssl 編を参照してください。
メタデータの作成と提出(★)
・メタデータテンプレートは、初期設定で「/root/GETFILE」に取得したidp-metadata.xmlを使用します。rootのホームディレクトリに「"ドメインなしホスト名".xml」のファイル名でコピーします。 例)1番を割り振られた場合 ホスト名:ex-idp-test01.gakunin.nii.ac.jpとなり、ファイル名:ex-idp-test01.xmlです。 以下のコマンドでファイルをコピーします。 # cp /root/GETFILE/idp-metadata.xml /root/ex-idp-test01.xml
コピー後、IdPメタデータテンプレートを参考に必要な項目を変更します。 (証明書部分には、/opt/shibboleth-idp/credentials/server.crtの内容を使用します。) |
学認申請システム(テストFed)から登録を行います。入力したデータから自動的にメタデータが生成されますのでメタデータ作成の必要はありません。詳細は参加のページをご覧ください。 ⇒参加 |
学認申請システムから登録を行います。入力したデータから自動的にメタデータが生成されますのでメタデータ作成の必要はありません。詳細は参加のページをご覧ください。 ⇒参加 |
・作成したメタデータは学認申請システムではなく、実習セミナー内のDSサーバに転送します。 以下は、転送コマンドの例です。 メタデータファイル名を各自のファイル名に変更して実行してください。 例)ホスト名:ex-idp-test01.gakunin.nii.ac.jpの場合 # scp /root/ex-idp-test01.xml test@ex-ds.gakunin.nii.ac.jp:METADATA
転送したメタデータは、1分周期で他のメタデータとマージ処理を行い、実習セミナー内のフェデレーションメタデータが更新されます。 ※1分周期で行う為、最大約1分登録までに時間がかかります。 |
Back-Channelの設定
Shib1.3のSPにも接続する場合は、IdPとの通信時にTLS接続を行うため、下記にしたがいBack-Channelの設定を行ってください。 このTLS接続ではポート8443を利用します。
・実習セミナーではShibboleth SPバージョン1.3は対象としていないため以下の設定は不要です。 |
1.キーストアの設定
サーバ証明書を格納したキーストアを作成します。
# cd /opt/shibboleth-idp/credentials
# openssl pkcs12 -export -out pkcs12.p12 -in サーバ証明書.crt -inkey サーバ秘密鍵.key -name サーバ名
(ここで聞かれるエクスポートパスワードにはキーストアパスワードと同じものを指定してください)
# keytool -importkeystore -srckeystore pkcs12.p12 -destkeystore keystore.jks \
-srcstoretype pkcs12 -deststoretype jks -srcalias サーバ名 -destalias サーバ名 \
-storepass キーストアパスワード # rm pkcs12.p12 # chmod 600 /opt/shibboleth-idp/credentials/keystore.jks |
Tomcatを"tomcat"ユーザで実行する場合は、さらに以下のコマンドを実行しTomcatが読み取れるようにします。
# chgrp tomcat /opt/shibboleth-idp/credentials/keystore.jks
# chmod g+r /opt/shibboleth-idp/credentials/keystore.jks
|
2.ライブラリのコピー
https://build.shibboleth.net/nexus/service/local/repositories/releases/content/net/shibboleth/utilities/trustany-ssl/1.0.0/trustany-ssl-1.0.0.jar よりダウンロードします。
trustany-ssl-1.0.0.jar を $CATALINA_HOME/lib 配下にコピーします。
# wget https://build.shibboleth.net/nexus/service/local/repositories/releases/content/net/shibboleth/utilities/trustany-ssl/1.0.0/trustany-ssl-1.0.0.jar # cp trustany-ssl-1.0.0.jar $CATALINA_HOME/lib
|
ダウンロードされるJARファイルのSHA-256ハッシュ値は以下の通りです。さらに真正性を確認したい場合はPGP署名をご利用ください。
# sha256sum trustany-ssl-1.0.0.jar 80f80f45dcb6671ad963e6ebf761baeb195502ca5b274b6b3f99e4ed2a900466 trustany-ssl-1.0.0.jar
|
この手順は古いものです。特に理由がなければ上記のtomcat-dta-ssl-*.jarを使用してください。 |
# cp /opt/shibboleth-idp/lib/shibboleth-jce-1.1.0.jar $JAVA_HOME/jre/lib/ext
|
※ 2.3.4以降には当該ファイルが同梱されていません。⇒情報交換ML:00414, 情報交換ML:00513 さらに、 $JAVA_HOME/jre/lib/security/java.security ファイルに以下を追加します。 # # List of providers and their preference orders (see above): # security.provider.1=sun.security.provider.Sun
(省略) security.provider.7=org.jcp.xml.dsig.internal.dom.XMLDSigRI security.provider.8=sun.security.smartcardio.SunPCSC security.provider.9=edu.internet2.middleware.shibboleth.DelegateToApplicationProvider ↑ 行を追加
|
番号:9 は、既に記載されている番号に合わせて順番にして下さい。 (9が既に記載されている場合は、10に修正して行を追加) |
3.SOAP設定
$CATALINA_BASE/conf/server.xml ファイルに以下を追加します。
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150"
SSLEnabled="true"
scheme="https"
maxPostSize="100000"
secure="true"
clientAuth="want"
sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2"
keystoreFile="/opt/shibboleth-idp/credentials/keystore.jks"
keystorePass="キーストアパスワード"
trustManagerClassName="net.shibboleth.utilities.ssl.TrustAnyCertificate" /> |
sslEnabledProtocols はSSLv3を無効にするための記述です。Tomcatのバージョンによって参照されるものが異なります。マイナーバージョンにも影響を受けるため、安全のため両方を記載しています。なお、TLSv1.1とTLSv1.2の記載がありますが、実際に使用できるか否かはJava(JVM)のバージョンに依存します。
|
<Connector port="8443"
maxHttpHeaderSize="8192"
maxSpareThreads="75"
scheme="https"
secure="true"
clientAuth="want"
SSLEnabled="true"
sslProtocol="TLS" sslProtocols="TLSv1,TLSv1.1,TLSv1.2"
sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2" keystoreFile="/opt/shibboleth-idp/credentials/keystore.jks"
keystorePass="キーストアパスワード"
truststoreFile="/opt/shibboleth-idp/credentials/keystore.jks"
truststorePass="キーストアパスワード"
truststoreAlgorithm="DelegateToApplication"/>
|
|