[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[upki-fed:00475] Re: how to sign metadata?
- Subject: [upki-fed:00475] Re: how to sign metadata?
- Date: Wed, 27 Jun 2012 16:31:39 +0900
- From: TSUCHIYA Masatoshi <xxxxxxxx@xxxxxx>
土屋です.
表題の件,自己解決しました.
>> On Tue, 26 Jun 2012 00:46:40 +0900
>> xxxxxxxx@xxxxxx (TSUCHIYA Masatoshi) said as follows:
>(2) または,xmlsec というコマンド以外に何か簡単な署名方法はあるのでしょ
>うか?
Debian だと opensaml2-tools というパッケージに入っている samlsign という
ツールを使えば楽勝でした.
以下,手順の概要をまとめておきます.
(1) OpenSSL でメタデータ署名用の鍵ペアを作る.
openssl req -newkey rsa:2048 -keyout federation.key -keyform PEM -out federation.req -outform PEM
openssl x509 -in federation.req -out federation.cer -req -signkey federation.key -days 3650
(2) samlsign は暗号化された秘密鍵を読み込むことができないので,暗号化を
解除しておく.
openssl rsa -in federation.key -out federation_cleartext.key
(3) samlsign でメタデータに署名する.
samlsign -s -k ./federation_cleartext.key -c ./federation.cer -f ./unsigned_metadata.xml > metadata.xml
各ファイルは必ず絶対パスか ./ を省略しない相対パスかで記述する必要があり
ます.でないと,samlsign が /etc/openssl/ の下を探しに行ってエラーになり
ます.
(4) 署名したメタデータをどこか適当なウェブサーバからダウンロードできるよ
うにしておく.例えば,
https://idp.example.net/metadata/federation.xml
(5) IdP で上記メタデータを読み込む設定をする.IdP が稼働しているサーバと
メタデータ配布サーバを同居させたので,特に難しいことはなく,relying-party.xml
に以下のように記述すれば良い
<MetadataProvider id="ShibbolethMetadata" xsi:type="ChainingMetadataProvider" xmlns="urn:mace:shibboleth:2.0:metadata">
<MetadataProvider id="IdPMD" xsi:type="FilesystemMetadataProvider"
metadataFile="/usr/share/metadata/federation.xml" />
(略)
</MetadataProvider>
(5) メタデータの署名に使った公開鍵 federation.cer を,SP にコピーしておく.
(6) SP で上記メタデータを読み込む設定をする.
/etc/shibboleth/shibboleth2.xml に以下を記述.
<MetadataProvider type="Chaining">
<MetadataProvider type="XML" uri="https://idp.example.net/metadata/federation.xml"
backingFilePath="/var/lib/shibboleth/federation.xml"
reloadInterval="3600">
<!--
<MetadataFilter type="RequireValidUntil" maxValidityInterval="2419200"/>
-->
<MetadataFilter type="Signature" certificate="/etc/shibboleth/federation.cer"/>
</MetadataProvider>
</MetadataProvider>
重要な注意点として,RequireValidUntil 属性をコメントアウトしている点があ
ります.この属性は,メタデータを定期的に更新することを強制することによっ
て,危殆化した IdP や SP をフェデレーションから排除するために必要な設定で
す.しかし,大学ローカルなフェデレーションの場合は,
- 専任の運用担当者がいるわけではないので,定期的にメタデータに署名し直
すのは負荷が高い.
- 大学ローカルなフェデレーションですから,万一の場合は,全ての管理者に
設定変更や更新を依頼することも難しくない.
という判断をして,メタデータには validUntil 属性を設定しませんでした.そ
のため,SP 側では RequireValidUntil 属性をコメントアウトしておく必要が生
じます.
--
土屋 雅稔 ( TSUCHIYA Masatoshi )