PPJ GRID の使い方 for me
2008/4/30 last update: 2008/8/7
User CA の取得
GRIDを使うには、ユーザ証明書が必要なので取得しなければならない。
http://gridca.kek.jp/ から Getting Started
へ行く。
を(KEK 木村さんへ?)提出して,佐々木さんの面接を受ける。ユーザCA を発行してもらうと
User/Pass(10文字/10文字)が記された紙が FAX されて来る。Password は変更できる。
http://gridca.kek.jp/ の Documents →
User
Manual → HTML
Version Enrollment Manual にある通り、Client Tool をインストールして「3. Obtaining Certificates (Globus User Certificate)」
を実行。
筑波では、grid001 の /opt/naregi/ca/bin 以下に install されているようだ。
globus-user-req.sh は、$HOME/.globus のディレクトリに
- usercert.pem: CA局が署名した user 証明書
- userkey.pem : 秘密鍵(絶対誰にも見られてはいけない, DES3で暗号化されている)
が作られる。これらのファイルは、Disk クラッシュ等で失われないようにしなければならない。証明書の再発行は、旧証明書を
revoke しなければできないが、revoke するときにも旧証明書が必要。
User 証明書を web browser へ組み込む
GRID のサービスを提供している web page へ接続する時は、接続に個人証明が必要な場合がある。このような web page に
access するためには、発行されたユーザー証明書を web browser へ組み込まなければならない。
証明書を pkcs12 と言う形式で export
$ openssl pkcs12 -export -inkey
.globus/userkey.pem -in
.globus/usercert.pem -out mycert.p12
(userkey.pemはDES3で暗号化されているのでexportには、pass phraseが必要)
Mozilla, Firefox 系
Edit -> Preferences -> Privacy & Security -> Certificates
-> Manage certificates -> Import
この時、Software Security Device のパスワードが必要。
自分で設定した覚えが無い、または、忘れた場合、以下の reset が必要。
Edit -> Preferences -> Privacy & Security -> Master
Password -> Reset Password
IE 系
ツール -> インターネットオプション -> コンテンツ
-> 証明書 -> インポート
証明書が組み込まれた web browser からは、例えば
https://voms.cc.kek.jp:8443/vomses/
https://voms.cnaf.infn.it:8443/vomses/
などへ access できる。
User 証明書の更新
ユーザ証明書の有効期限が一年なので、適宜更新する必要がある。有効期限の確
認:grid-cert-info
もしくは,openssl x509 -in ~/.globus/usercert.pem -text -noout
ユーザ証明書: $HOME/.globus/usercert.pem,
userkey.pem
KEK GRID CA Client Toolkit (/opt/naregi/ca/bin )が揃っている環境にて、
/opt/naregi/ca/bin/globus-user-renew.sh -rnw
PPJ VO への Join
ユーザ証明書を組み込んだ web browser から https://voms.cc.kek.jp:8443/vomses/
へアクセス。
ppj -> Newuser registration。必要事項を書き込
み submit。管理者から VO へ accept されたと言うメールが届くのを待つ。
ppj -> Adminiser the VO -> LIST OF USERS で VO 所属の user
の一覧が見れる。これは、そのVOに所属していなくても見ることができるようだ。
WMS service が動いているホストの /etc/grid-security/grid-mapfile
にDNが登録されるまで若干のタイムラグがある。
HOST 証明書の取得
https://gridca.kek.jp/repository/KEK-GRID-ENROLLMENT-DETAIL.html
の4を参照。
2のKEK GRID CA Client Toolkit のインストールが必要。
http://gridca.kek.jp/にいく.
「Start Your Web Enrollment」を選んで user/pass を入力
「Generate License for Host/Service」を選択
必要な License の数を入力して generate
/opt/naregi/ca/bin/globus-host-req.sh -rvk
[y][0]
rm -i /etc/grid-security/host*
/opt/naregi/ca/bin/globus-host-req.sh
[][**HOSTNAME**(FQDN)][Y][**LICENSE_CODE**]
(grid001 上の globus-host-req.sh を使う必要がある. 他のhostのは
versionが古い)
for i in 1 2 3 4 5 6 7; do ssh grid00${i} openssl x509 -in /etc/grid-security/hostcert.pem -subject -dates -noout; done
PPJ GRID の使い方
UI マシンへログイン
glite の UIツールがインストールされている host (grid001) へ login
環境変数が設定されていない場合は、
$ source
/etc/profile.d/glite-env.csh (csh系)
$ source
/etc/profile.d/globus.csh (glite-3.0のみ)
$ . /etc/profile.d/glite-env.sh
(sh系)
$ . /etc/profile.d/globus.sh (glite-3.0のみ)
home directory に .globus/ に自分のユーザ証明書と秘密鍵(usercert.pem,
userkey.pem)を置いておく。
$ grid-cert-info
:ユーザ証明書を確認する
$ openssl verify -verbose
-CApath /etc/grid-security/certificates
~/.globus/usercert.pem :証明書をverifyする。
Proxy(委任状)作成
ユーザの秘密鍵は、DES暗号で暗号化されている。ユーザ認証に秘密鍵 userkey.pem
を使う場合、いちいち復号化のためのパスフレーズの入力をするのは面倒であるため、通常は、短時間のみ有効なproxyを作成し、ユーザ認証にはそれを使
う。
$ voms-proxy-init -voms ppj
$ voms-proxy-info -all :
proxyの情報を確認
リソースの情報を得る
$ glite-wms-job-list-match -a
hello.jdl:submit可能な CEId一覧がでてくる。
$ lcg-info --list-ce --attrs Tag
--vo ppj : CE に available な Tag一覧
Jobを投入
JDL file およびbash scriptを用意
------ hello.jdl
----------------------
// hello.jdl
Executable="/bin/bash";
Arguments = "hello.sh";
StdOutput="std.out";
StdError="std.err";
InputSandbox={"hello.sh"};
OutputSandbox={"std.out","std.err"};
---------------------------------------
------ hello.sh
-----------------------
#! /bin/bash
hostname=`/bin/hostname`
echo "hello ${hostname}"
---------------------------------------
job を submit
$ glite-wms-job-submit --vo ppj
-a hello.jdl
submitに成功すると job ID が
https://grid006.tsukuba.jp.hep.net:9000/XXXXXXXXXXX
とでてくる。
$ glite-wms-job-submit --resource
grid008.tsukuba.jp.hep.net:2119/jobmanager-lcgpbs-ppj -a hello.jdl
:
指定したCEIdへjobを投入する。
job の status をみる
submit の時に与えられた jobIDを使って
$ glite-wms-job-status
https://grid006.tsukuba.jp.hep.net:9000/XXXXXX
Status は Ready -> Scheduled -> Running -> Done(Aborted)
となる。
$ glite-wms-job-status --all -e
7 -e 8 : Cleared(7)とAborted(8)を除く job を全て表示
job出力の回収
$ glite-wms-job-output --dir
outputdir
https://grid006.tsukuba.jp.hep.net:9000/XXXXXX
Job status は Cleared になる。
Globus gatekeeper
job submit
$ globus-job-run grid002
/bin/hostname
$ globus-job-run
grid002:2119/jobmanager-lcgpbs -queue
ppj /bin/hostname : cf. http://www.bo.infn.it/alice/introgrd/lcg3-0/node29.html
$ globus-job-submit
grid002:2119/jobmanager-lcgpbs -queue ppj /bin/hostname
https://grid002.tsukuba.jp.hep.net:20001/22442/1210670958/
$ globus-job-status
https://grid002.tsukuba.jp.hep.net:20001/22442/1210670958/
$ globus-job-get-output
https://grid002.tsukuba.jp.hep.net:20001/22442/1210670958/
grid002.tsukuba.jp.hep.net
RSL file
--- hostname.rsl ------------------------------------
& (count=1) (queue="ppj") (executable=/bin/hostname)
-----------------------------------------------------
$ globusrun -s -r
grid002:2119/jobmanager-lcgpbs -f hello.rsl
おまけ(証明書の仕組み)
RSA の仕組み
適当な素数 p, q をもって来る。(例えば p=11, q=13, p*q=143)
Lをp-1とq-1の最小公倍数とする。L=LCM(p-1,q-1)。(L=60)
e を L と素である数とする。(e=7)
そして p*q と e を公開鍵として公開する。(p*q=143, e=7)
d = e^(-1) mod L ( e*d = 1 mod L) を選ぶ。これが秘密鍵となる。(d=43)
公開鍵を使った暗号化は、
y= x^e mod p*q : x=5 => y=47
これを秘密鍵で復号化するためには、
z= y^d mod p*q : y=47 => z=5
証明は省くが d*e = 1 mod LCM(p-1,q-1) の時 x^(d*e) =x mod p*q
となる。(フェルマーの小定理,オイラーの公式)
秘密鍵 d は、pq が素因数分解されれば容易に求める事が可能だが、大きな数の素因数分解は、容易ではない。
復号化には、y^d という大きな数の指数を計算しなければならないが、この計算を高速化するために
exponent1、expontent2、coefficient 等を使う。(CRT,
中国人余剰定理)
(p=11, q=13, p*q=143 の例)
modulus: p*q = 143
publicExponent: e = 7
privateExponent: d = 43
prime1: p = 11
prime2: q = 13
exponent1: d mod (p-1) = 43 mod 11-1 = 3
exponent2: d mod (q-1) = 43 mod 13-1 = 7
coefficient: q^-1 mod p = 13^-1 mod 11 = 6
x=27 を暗号化: x^e mod p*q = 27^7 mod 143 = 14
暗号化された数 y=14 を復号化する場合: y^e mod p*q = 14^43 mod 143 = 27
この計算は、
cp = y^exp1 mod p = 14^3 mod 11 = 5
cq = y^exp2 mod q = 14^7 mod 13 = 1
h = coeff*(cp-cq) mod p = 6*(5-1) mod 11 = 2
x = cq + (h*q) = 1 + (2*13) = 27
で計算できる。
サーバ証明書発行の流れ
1. サーバ管理者が RSA 秘密鍵を生成
$ openssl genrsa -out
server.key 1024
Generating RSA private key, 1024 bit long modulus
.........++++++
..................................++++++
e is 65537 (0x10001)
server.key ファイルができる。
中身は、-----BEGIN RSA PRIVATE KEY----- で始まり -----END RSA PRIVATE KEY-----
で終るテキスト
$ openssl rsa -in server.key -text
で中身を確認できる。(32bitで作製した時の例)
Private-Key: (32 bit)
modulus: 3842464177 (0xe50759b1) ... 32bit=4byte の数、p*q に相当する。
publicExponent: 65537 (0x10001) ... e に相当する。
privateExponent: 1982818033 (0x762f66f1) ... d に相当する。
prime1: 62639 (0xf4af) ... p に相当する。
prime2: 61343 (0xef9f) ... q に相当する。62639 * 61343 = 3842464177
exponent1: 12143 (0x2f6f) ... d mod (p-1)
exponent2: 60567 (0xec97) ... d mod (q-1)
coefficient: 41711 (0xa2ef) ... q^(-1) mod p つまり q*x = 1 mode p となる x
秘密鍵は、他人に見られてはならないものなので、chmod 400 server.key として permission を落す。
2. CSR の作成
RSA秘密鍵をもとにCSR(証明書要求)を作成する。
% openssl req -new -key server.key -out csr.pem
内容を確認するには、
% openssl req -in csr.pem -text
これには、
Subject: 証明される内容
RSAの公開鍵: Modulus(p*q)とExponent(e)
Signiture:
証明書の内容のハッシュをとり、それを秘密鍵で暗号化したもの。これによって証明書要求の内容に改竄がないことが証明できる。defaultではハッシュ
関数として md5 が使われるが -sha1 オプションを付けて sha アルゴリズムを使用した方が安全。
が含まれる。
3. 認証局が受け取った CSRに署名
認証局が受け取った CSR
に対し署名(証明される内容のハッシュを認証局の秘密鍵で暗号化)やその他の情報を付加しx509という形式にした証明書を生成し、サーバ管理者に送付。
自分で署名する場合:
openssl x509 -in csr.pem -out server.crt -req -signkey server.key
(-days 365 -sha1)
Kerberosを使ったProxyの取得
$ kinit
$ kx509
$ klist -p
略語集
CRL Certificate Revocation Lists: CAにより発行される証明書の破棄リスト
CSR Certificate Signing Request: 証明書要求
DES Data Encryption Standard: 暗号化と復号化に共通の鍵を用いる「共通鍵暗号」の一種
DN Distinguished Name: 証明書などに使われる識別子、RDN(Relative Distinguished
Name)を順に並べたもの, C=Country(国), O=Organization(組織), OU=Organization
Unit Name(部局), CN=Common Name(一般名)
EDG EU Data Grid
GASS Global Access to Secondary storage : 二次記憶への広域アクセス,
Globusが提供するプロトコルのひとつ
GRAM Grid Resource Management Protocol : グリッド資源管理プロトコル,
Globusが提供するプロトコルのひとつ
GSI Grid Security Infrastructure
JDL Job Description Language
LCAS Local Centre Authorization Service http://wiki.ngs.ac.uk/index.php?title=LCAS
PEM Privacy Enhanced Mail: 証明書、証明書要求、鍵などのバイナリデータをBASE64でテキスト化した形式
PKI Public Key Infrastructure 公開鍵暗号基盤
RSL Globus Resource Specification Language
SHA Secure Hash Algorithm: デジタル署名に使われるハッシュ関数の一種(MD5より安全とされる)
SSL Secure Sockets Layer
TLS Transport Layer Security インターネット上で情報を暗号化して送受信するプロトコルの一つ (RFC4346)
WMS Workload Management System
リンク集
the condor homepage (http://www.cs.wisc.edu/condor/)
sungrid engine (http://www.sun.com/software/gridware/)
pbs (http://www.openpbs.org/which_pbs.html)
The main CAF homepage (for othe documents on glidecafs): http://cdfcaf.fnal.gov/
globus toolkit (for gatekeeper): http://www.globus.org/toolkit/
the main osg site (just to understand what they require to your site): http://www.opensciencegrid.org/