shibboleth 証明書の更新


shibboleth

用語

学術認証フェデレーション「学認(GakuNin)」 日本のアカデミック関係の統合サインオンの事業。NIIが運営。仕組みとして Shibbolethを用いる。
Shibboleth アカデミックのデファクトSAML。SAMLとはシングルサインオン規格のひとつ。クラウドベース、XMLベース、オープン実装が存在するなどの特徴がある。
IdP(ID Provider)サインオン時の認証サーバ。Shibbolethの場合、1つのアカデミック組織に最低1つ。
SP(Service Provider) Webなどでサービスを提供するサーバ。

以下のような環境で証明書を更新した。

  • Shibboleth の秘密鍵と証明書は Web サーバのSSL秘密鍵と証明書を共用
  • 旧い Debian サーバに https 上で Webサービスが動作している
  • Webサービスは Shibboleth 認証を使用している
  • Webサービスは組織内運用のみ、学術認証フェデレーションへのサービス公開は無し。
  • 証明書期限切れに伴う更新作業

既に証明書期限切れなので、入れ替えるだけの簡単作業。

証明書を作る

鍵長2048bitで秘密鍵を作成


$ openssl genrsa -des3 -rand randfile1.txt:randfile2.txt:randfile3.txt 2048 -out > host.key

この作業で一旦 pass phrase を入力する。
この key ファイルから、以下のコマンドで組織情報などを入力し、CSR ファイルを作成する。


openssl req -new sha256 --key host.key -out host.csr

組織情報の入力方法は偉い人に従う。

今回のSPの証明書は UPKI 電子証明書発行サービスを利用することが決まっているので、TSV に添付して申請する

TSV: タブ区切りデータ形式。 CSV: カンマ区切りデータ形式。TSVはCSVのタブ区切り版。

UPKIへの申請は指定書式のTSVデータを用いて行うが、それについてはTSVデータ作成ツールを用いる。
TSVデータ作成ツール → https://certs.nii.ac.jp/tsv-tool/create/

作成したTSVファイルをサーバ設置機関の登録担当者に提出。証明書が発行されるのを待つ(1日〜数日)。

証明書が発行されたら取得し、該当サーバにserver.crtという名前で設置。

今回、中間CA証明書も更新しないといけないので以下から取得
https://repo1.secomtrust.net/sppca/nii/odca3/index.html
nii-odca3sha2.cerという名前で該当サーバに設置。

httpsサーバ再起動

必要なファイルが配置できたら以下のようにしてサーバ再起動


/etc/init.d/apache2 resatart

エラーが出たので下記を参考にして

pass phrase を抜いた CSR ファイルを作る。


openssl rsa -in host.key -out host.key

もう一度webサーバ再起動


/etc/init.d/apache2 resatart

ブラウザで見てサーバ証明書エラーが解消できていればOK.

Shibboleth の更新

WebサーバのSSL証明書を流用して、メタデータを作成する。

http://federation.belnet.be/node/24
を参考に、以下のようにしてmetadata.xmlを作成する


shib-metagen -c server.crt -h hoge.hage.fuga-u.ac.jp > metaadata.xml

できたメタデータを、IdP管理担当者に送る。IdPメタデータを更新してもらう。

shibd の設定

新しいIdPメタデータを受領してサーバに設置、

/etc/apache2/mods-avairable/shibbolethを編集して証明書およびIdPメタデータを読み込むように設定します。

今回の機関ではIdPメタデータはWebで参照でき、SP上のshibdがこれを参照するようにする仕組みがありましたがこれを使わず静的にファイルを参照するようにしました。

参考資料

ここを読んでおけばいい気がする
https://webclass.jp/documents/system-admin/shibboleth-sp

証明書発行サービスのサイト
https://certs.nii.ac.jp/join/

事前準備 ~ 証明書の申請から取得まで
https://meatwiki.nii.ac.jp/confluence/pages/viewpage.action?pageId=26188809

Apache(mod_ssl)編
https://meatwiki.nii.ac.jp/confluence/pages/viewpage.action?pageId=26192324