LCGをはじめとするグリッドではユーザは公開鍵暗号インフラによって認証されます。そのため、まず最初にユーザ証明書を取得する必要があります。これはユーザが生成した鍵対の公開鍵に対して認証局(Certificate Authority:CA)が署名をしたファイルです。
日本のユーザは日本にある認証局に証明書を発行してもらうことになります。ここでは証明書の発行申請の仕方、署名された鍵対の取り扱いについて説明します。
証明書の発行はKEKの認証局KEK-CAに依頼します。証明書を発行してもらうためにはKEKのユーザ登録が完了していなければなりません。
このことはKEKのいずれかのプロジェクト(実験や開発研究)に属し、KEKの職員から確認された人物であることを意味しています。
公開鍵暗号の証明書は非常に大切なものです。そのため、申請者は認証局の認証方針をよく理解した上で申請する必要があります。それが記述された文書がCP/CPSと呼ばれるものです。ここにありますのでまずお読みください。ここの中に上記の条件なども書かれています。
CP/CPS=Certificate Policy/Certificate Practices Statement
これから説明する手順はKEK-CAのマニュアルに従っています。こちらもご参照ください。
CP/CPSをよく読んだら次は申請です。手間ではありますがこの部分はオンラインでは出来ません。
これで申請の手続きは完了です。
本人が証明書発行を依頼したことを確認するために面接が行われます。面接は直接対人で行うかビデオ会議を用いてなされます。このときにCP/CPS文書をちゃんと読んだか確認されます。必ず読んでおきましょう。
本人確認が完了すると郵送で証明書サービスを行うサーバのアカウントとパスワードが送られてきます。これはなくさないように大事に保管してください。
証明書の発行はLinux上で走るツールを使って行います。そのためのツールをインストールします。インストール場所を用意しましょう。自分のホームの下にkekcaサブディレクトリを作ります。
> mkdir /home/sakamoto/kekca > cd /home/sakamoto/kekca
KEK-CAのページからtarボールをダウンロードします。二つ必要です。
それぞれ解凍します。現在kekcaサブディレクトリにいます。
ではまずkekgca-client-baseから
> tar xzvf kekgca-client-base.tar.gz ... > cd kekgca-client-base > ./configure --prefix=/home/sakamoto/kekca ... > make ... > make install
--prefix=というオプションでは絶対パスを指定してください。~/kekcaではうまくいかないみたい。
このとき、SLC4の上では
*** glibc detected *** double free or corruption (!prev): 0x000000000050a010 ***というエラーが出る場合があります。その場合はMALLOC_CHECK_環境変数を0にセットしてから上記の作業をやってください。
export MALLOC_CHECK_=0 ./configure --prefix=/home/sakamoto/kekca make make install
次にkekgca-client-extのインストール。次は./configureの次はいきなりmake installなのでご注意を。
> cd ~/kekca > tar xzvf kekgca-client-ext.tar.gz ... > cd kekgca-client-ext ... > ./configure --with-naregica-path=/home/sakamoto/kekca ... > make install
ここでは個人がスーパーユーザにならずにインストールする方法を示しました。複数の人が共通で使う場合は上記/home/sakamoto/kekcaの替わりに/opt/naregi/caとやってください。この場合、make installはSUでやる必要があります。
証明書を取得するためのツールのインストールが完了しました。次は実際に鍵対を生成し認証局の署名をもらいます。鍵対は~/.globusという所に作られます。userkey.pemというファイルがユーザが生成した秘密鍵で、usercert.pemが認証局の署名がされた公開鍵ということになります。
もし既に.globusサブディレクトリが存在し、その中に同名のファイルがある場合は既に存在するという警告が出て作業が終わります。待避しておいてください。
この作業にはglobus-user-req.shというコマンドを使います。
> cd /home/sakamoto/kekca/bin > ./globus-user-req.sh --- Constructcertificate request contents --- Please input your organization or organization unit name... (optional) Ex). ICEPP: ICEPP [何も入れないとO=KEKだけになる] Please input your common name... (mandatory) Ex.) Jack Doe : Hiroshi Sakamoto ------ You are requesting below content ------ "C=JP/O=KEK/OU=CRC/OU=ICEPP/CN=Hiroshi Sakamoto" ----------------------------------------------- Is it OK? (Y/N) Y -- Please input your CA service account info -- Please input username for CA... (mandatory) Ex.) rnD10diGit : ABCDE01234 [郵送された紙にあるユーザ名] Please input password for CA... (mandatory) Input Password : [郵送された紙にあるパスワードを入力]
この段階で秘密鍵が生成されてKEK-CA認証局のサーバに接続されます。認証に成功すると署名されます。このときに秘密鍵をあけるためのパスフレーズが聞かれます。このパスフレーズはグリッドにログインするたびに(正確に言うとvoms-proxy-initを実行するたびに)入力をするものです。忘れないようにしましょう。
----- Start to access KEK GRID CA service ----- ------------------------------------------- creating a certificate signing request ------------------------------------------- generate private key (size 1024 bit) ...........oo .oo input Distinguished Name (DN). select directory tag (input number) (1.C, 2.ST, 3.L, 4.O, 5.OU, 6.CN, 7.UID, 8.Email, 9.Quit) ...ここには数行表示される... trying to connect RA server : rca01.kek.jp (11412) ... ok. request for issuing a new certificate ... ok. save a CA certificate file : /home/sakamoto/.globus/1234abcd.0 save a certificate file : /home/sakamoto/.globus/usercert.pem save a private key file : /home/sakamoto/.globus/userkey.pem Input PASS Phrase: [ここに秘密鍵をあけるためのパスフレーズを入力] Verifying - Input PASS Phrase: [確認のため再度] --------------- END OF globus-user-req.sh -------------
このパスフレーズが聞かれる部分で画面に表示される文字列の記録が手元にありません。どなたかこれからこの作業をされる方、記録してお知らせください。ご協力よろしくお願いします。と書きましたら阪大花垣さんからいただきました。ありがとうございました。
コマンドが終了した段階で~/.globusにuserkey.pemとusercert.pemが出来ています。テキストファイルですので内容を確認しておきましょう。
> cd ~/.globus > cat userkey.pem ... > cat usercert.pem ... > ls -l -rw-r--r-- 1 sakamoto sakamoto 1943 Aug 17 16:06 usercert.pem -rw------- 1 sakamoto sakamoto 1921 Aug 17 16:06 userkey.pem
Linux上ではこの段階で鍵対がグリッドへのログインに使用できます。そのマシンにグリッドのUI(User Interface)ツールがインストールされていれば
> grid-cert-info
Certificate:
Data:
Version: 3 (0x2)
Signature Algorithm: md5WithRSAEncryption
Issuer: C=JP, O=KEK, CN=KEK-CA
などと表示されるはずです。
UIツールですが、CERNのAFS環境では
> source /afs/cern.ch/project/gd/LCG-share/current/etc/profile.d/grid-env.shICEPPのlogin.icepp.jpでは
> source /afs/icepp.jp/project/gd/LCG-share/current/etc/profile.d/grid-env.shとしてください。
自分のデスクトップマシンにUI環境を作りたい場合はこちらをご覧ください。
証明書の取得はこれで完了です。しかし、グリッドを利用するにはもう一つ手続きが必要です。それは仮想組織(VO)への登録です。それが済まないとグリッドのリソースの利用は一切出来ません。
仮想組織に登録するためにはWEBブラウザから登録申請を行います。このとき、そのWEBブラウザには今発行した証明書が搭載されていなければなりません。WEBブラウザへ証明書を組み込む方法を次に説明します。
この段階で鍵対(証明書)はPEM形式というファイル形式で保存されています。WEBブラウザはそれに対し、PKCS12形式のファイルを扱います。そのため、まずその変換を行う必要があります。
> cd ~/.globus > openssl pkcs12 -export -inkey userkey.pem -in usercert.pem -out kekca2006.p12 Enter pass phrase for userkey.pem: [先ほど設定したパスフレーズ] Enter Export Password: [変換にあたって新規につけるパスワード] Verifying - enter Export Password: [再度入力]
これでkekca2006.p12というファイルが出来ているはずです。
WindowsやMacのブラウザに組み込みたい場合はこのファイルをscpクライアントツールなどを使ってそのマシンにダウンロードしてください。
次にブラウザに組み込みます。
Linux上のブラウザMozillaにインストールする場合です。
Windows上のFirefoxを使用する場合です。あらかじめkekca2006.p12ファイルをダウンロードしておいてください。
Windows上のInternet Explorerを使用する場合です。あらかじめkekca2006.p12ファイルをダウンロードしておいてください。
Mac上のFirefoxを使用する場合です。あらかじめkekca2006.p12ファイルをダウンロードしておいてください。
仮想組織の登録申請については別のページで説明します。こちらへ進んでください。
[参考資料]