きどたかのブログ

いつか誰かがこのブログからトラブルを解決しますように。

証明書がらみのRACFコマンド

証明書がらみのことを最近やっているので、ちと書いてみる。
詳しいことは、次のドキュメント等を読もう。
Security Server RACF Command Language Reference ※マニュアル
WebSphere Application Server V7.0 Security Guide ※Redbook
Encryption Facility for zOS Version 1.10 ※Redbook(JCLのサンプルが丁度あったから・・・)


RACDCERT LISTRING(*) ID(ring_owner)


RINGOWNERがring_ownerであるSAFKeyringを全て表示する。
SAFKeyringはユーザー毎に存在する。存在するっつーかユーザー毎に作る。


RACDCERT ADDRING('ring_name') ID(ring_owner)


ring_ownerにSAFKeyring 'ring_name'を追加する。
作りたてのSAFKeyringは空っぽ。


SAFKeyringとは何か?
証明書を保管するリポジトリである。証明書そのものを保管するのではなく、証明書のLABELを保管している。
そのため、SAFKeyringを消したとしても証明書そのものは消えない。
またSAFKeyringは、KeyStoreとTrustStoreを足した状態です。


RACDCERT DELRING('ring_name') ID(ring_owner)
消すのはこれ。


RACDCERT CONNECT(ID(certificate_owner) LABEL('label_name') RING('ring_name') USAGE(PERSONAL)) ID(ring_owner)


ring_ownerのSAFKeyring ring_nameに、certificate_ownerのLABELがlabel_nameである証明書を個人証明書として突っ込む。DEFAULTオプションも使う機会はあるね。


RACDCERT CONNECT(CERTAUTH LABEL('label_name') RING('ring_name') USAGE(CERTAUTH)) ID(ring_owner)


署名者証明書はこんな感じで追加。
署名者証明書にはオーナーが無い。


Writable Keyring Optionのためには、特殊なSAFKeyringを作成する必要がある。
KeyringHogeがあったとすると、
KeyringHoge.Rootと
KeyringHoge.Signersの2つがさらに必要。
Writable Keyring Optionが何をするものかはっきり勉強していないが、
WASの管理コンソールからSAFKeyring内の操作が出来ると思えばいいんじゃないかな。
まあ、他にもいろいろ設定がいるんだけど。


RACDCERT GENCERTはオプションが多いから割愛w
RACDCERT DELETEは簡単すぎて割愛w
RACDCERT EXPORTとIMPORTは面倒臭くなってきたから割愛w


RACDCERT LIST ID(certificate_owner)
これで個人証明書を表示。


WASzのDAEMONさんはSSSL(System SSL)しか使えないそうで、
HFS上のp12ファイルでは読めなくて、必ずSAFKeyringを読むことになるのだと。
WCTでEnable DAEMON SSLにチェック(デフォルト)していると、SAFKeyringが必ず作成されるはず。


さほど難しいコマンドではない。


ああ、大事なことは書いておこう。
署名がされてない個人証明書は意味がないので、通常個人証明書よりも先にCAの証明書をGENCERTで作っておく。
そして、個人証明書をGENCERTする際にSIGNWITH('label_name')で署名する。
CAの証明書は、他のユーザー(WASユーザー)のSAFKeyringに必ずつっこみTRUSTな状態にする。
信頼できん証明書でサインされた個人証明書は信頼できんからね。


営業時代に培った証明書の知識が多少なりとも今の僕のエンジニアライフにプラスになっている。