12-5. WWWブラウザの暗号化 (1) Netscape Communicator のデジタルID `02/11 * WWWクライアント用デジタルIDの発行ソフト Clifford Heath 氏が SSLeay を用いて作成した、Client Certificate 用のフリ−ソフト を試してみた。 http://www.osa.com.au/~cih/software/crypto/ ここから certs.tar と いうファイルをダウンロ−ドする。展開して訳も分からずテストしていたら、本人にメ− ルが行ってしまった。このソフトの仕組みは HTML ベ−スで、ブラウザからデジタルID のリクエストをして、WWWサ−バで署名し、その後またブラウザからデジタルIDをダ ウンロ−ドするようになっている。発行デジタルIDはシリアル番号になっていて、その 番号をメ−ルで通知してくるようになっている。それがソフトを展開したままだとメ−ル が Clifford Heath 氏に行くようになっている。彼の個人的なテスト・ソフトを公開した ということだろう。 すいません、今テストしています。まだ成功していませんとメ−ルを送ると、すぐ返事が きた。このソフトはもう古くなってしまって、 Internet Explorer では DLL ファイルが 対応していない。 Netscape なんかにおいても Certificate Request Format が異なって きている。http://www.openca.org/ が今では参考になるよということだった。 そして最 後に Good luck! と。彼の言う通り、このソフトそのままでは有効なデジタルIDは作る ことができなかった。それ以前にだいぶソフトに手直しした。このソフトはデジタルID の発行の部分は OpenSSL を使用する。つまり OpenSSL の制御ファイルの openssl.cnfを 見るようになっている。後でまた詳しく述べるが、 Netscape 用にデジタルIDを作る場 合、openssl.cnf のパラメ−タをいじらないと正しいのができない。 いろいろ試した結果。Windows 98/NT とUNIXの Netscape では、クライアント用デジ タルIDの解釈に違いがあるようである。UNIXは INDY と Vine Linux でやってみた が、openssl.cnf を何もいじらずに、INDY では Netscape 4.05 で何の問題もなくS/MIME による暗号メ−ルまでできた。 Vine Linux でもCAのデジタルIDは素直に入って認識 した。Windows 98 の Netscape では openssl.cnf ファイルをそのままだと、動作が不安 定、挙動不審となった。有効期限が切れているとか、CAのデジタルIDが見つからない とか。全くおかしい。Netscape は 4.5 でも 4.7 でもおかしいのは同じだった。Windows の Netscape ではきちんと X.509 v3 の拡張仕様に準じなければいけないみたいである。 * 先にCA用デジタルIDを作成する % CA.sh -newca CA certificate filename (or enter to create) Making CA certificate ... Using configuration from /usr/local/ssl/openssl.cnf Generating a 1024 bit RSA private key .+++++ ...............+++++ writing new private key to './demoCA/private/./cakey.pem' Enter PEM pass phrase: 1234567 Verifying password - Enter PEM pass phrase: 1234567 | Country Name : JP このような表示がでてくる。 State or Province Name : Aichi Locality Name : Nagoya Organization Name : NIX Organizational Unit Name : CAD Common Name (YOUR name) :web.nix.co.jj Email Address :katou@nix.co.jj % openssl x509 -in demoCA/cacert.pem -outform der -out ccc.der % du -a demoCA 1 demoCA/certs 1 demoCA/crl 1 demoCA/newcerts 2 demoCA/private/cakey.pem << CA.sh -newca でできた。 3 demoCA/private 1 demoCA/serial << 01 となっている。 0 demoCA/index.txt << 中身は空である。 3 demoCA/cacert.pem << CA.sh -newca でできた。 11 demoCA * Clifford Heath 氏のソフトのエッセンス index.html ------------------------------------------------- | |

CAのデジタルIDのブラウザへの取込

|CLICK | |

Netscape Navigator 個人用デジタルIDの請求

|Netscape Personal Certificate Request | |

Netscape Navigator 個人用デジタルIDの取込

|
| |
| load-ca-cert.cgi ------------------------------------------------- |#! /bin/sh |echo "Content-Type: application/x-x509-ca-cert" |echo |cat cacert.der |exit 0 p1.cgi ------------------------------------------------- |#!/bin/sh |echo Content-type: application/x-x509-user-cert |echo Content-length: 3467 |echo |sed -n '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/p' < 2.pem ikken.req ----------------------- % openssl ca -spkac ikken.req > 2.pem とやっ |Email=katou@nix.co.jj て、この Netscape CommunicatorのデジタルID |CN=ikken を作る。 |O=NIX |OU=CAD |C=JP |ST=Aichi |L=Nagoya |SPKAC=MIG+MGowXDANBg...VQWzgmX/efH9qb3iaZ7kJTDWU7O29kZNY9zTK+hjdKkJNzA== |Browser=NS |SubmitCertRequest=Request Personal Certificate req.html ------------------------------------------------- | |
|Mail

|CN

|O

この文字列は何でもいいみたい。 |OU

↓ | というタグは Netscape | ブラウザで秘密鍵と公開鍵を作成 |submit

する特殊なタグである。 |reset |

| ikken.cgi Clifford Heath氏によるスクリプトである。POST ------------------------- メソッドで入ってきた引き数を、B-Shell でうま |#!/bin/sh くさばいている。 |cat < |

Personal Certificate Request

|END |if [ x"$CONTENT_LENGTH" != x"" ] |then | dd bs=1 count=$CONTENT_LENGTH 2>/dev/null | echo '' |else | cat |fi | sed ' | s/&/\ |/g | s/%40/@/g s/%40/@/g は小生が追加した所でメ−ルアドレス | s/+/ /g の @ を文字列変換する。CGIだとかなり処理がめ | s/%0A//g んどうである。ここは PHPで記述する方がすっき | s/%0D//g りする。ikken.php3でファイルに落とすのが簡単 | s/%2B/+/g で見やすくなるだろう。 | s:%2F:/:g | s/%3D/=/g | ' > ikken.req | |cat < |END ikken.php3 ------------------------- | |"; |echo "CN=$CN
"; |echo "O=$O
"; |echo "OU=$OU
"; |echo "C=JP
"; << C, ST, L はあらかじめいれた。 |echo "ST=Aichi
"; << |echo "L=Nagoya
"; << |echo "SPKAC=$SPKAC
; |echo "Browser=NS
"; |echo "SubmitCertRequest=Request Personal Certificate" |?> | % openssl ca -spkac ikken.req > 2.pem は内容として次のことと同じである。 % openssl ca -spkac ikken.req -keyfile demoCA/private/cakey.pem -cert demoCA/cacert.pem > 2.pem コマンド ca はCA管理をするようになっている。 demoCA 以下の index.txt や serial ファイルを操作するので、先に CA.sh -newca とやって demoCA ディレクトリ以下を作成 しておいた。テストの際は、一回 % openssl ca とやったら、./demoCA/serial を 01 に して、./demoCA/index.txt を空にするとよい。 (2) OpenSSL による各種デジタルIDの発行 `02/11 * 先ずは注意事項 悪戦苦闘すること2週間。ようやく分かってきた。OpenSSL の制御ファイル openssl.cnf が癖者だった。Apache WWWサ−バ用には openssl.cnf なんて全くいじることなく、何 の苦もなくデジタルIDを発行した。そのためクライアントの Netscape Communicatorに も簡単に発行できると思い込んでしまった。そこが大きな穴だった。Apache は Netscape ではなかったからよかったのだ。Netscape は独自に X.509 Ver.3 を拡張している。これ を openssl.cnf で設定しなければならなかった。関係する変数は nsCertType で、 デフ ォルトはコメントになっている。 これを Netscape Communicator に入れるCA用、クラ イアント用と設定を変える必要があったのだ。もう一つ basicConstraints という変数も 関係している。もし Netscape Server 用のデジタルIDなら、 nsCertType = server に basicConstraints=CA:FALSE と設定しなければならない。 この Netscape 独自の X.509 Ver.3 の拡張仕様は http://home.netscape.com/eng/secur ity/comm4-cert-exts.html を見ると分かる。8ビットの各ビットで、 どのデジタルID に対応するか指定する。組み合わせもできる。SSL client は Netscape Communicator 用、 SSL server は Netscape Server 用ということである。 0: SSL client, 1: SSL server, 2: S/MIME client ( email のこと ) 3: Object Signing ( Java applets 用など ) 4: 予約 5: SSL CA, 6: S/MIME CA, 7: Object Signing CA % openssl x509 -text -in cacert.pem << デジタルIDの中身。 Certificate: | X509v3 extensions: X509v3 Subject Key Identifier: | X509v3 Authority Key Identifier: | X509v3 Basic Constraints: CA:TRUE << ここ注目、CA用。 Netscape Cert Type: SSL CA, S/MIME CA << ここ注目、CA用。 [ Netscape Communicator デジタルIDの注意 ] Netscape 自体の問題として、Netscape 側で作成する秘密鍵の扱いが極めて分かりにくい。 Netscape の操作画面でどこに作ったのか、その存在すらも確認できない。 いったん秘密 鍵を生成すると、秘密鍵はいつまでもあることになってしまう。この秘密鍵は key3.dbと 言うファイルにできる。Windows 98/NT それに INDY でも Netscape 4.05, 4.51, 4.75で ファイル名は同じだった。秘密鍵を作り直すには、 この key3.db ファイルを消去するし かない。key3.db ファイルを消去する時、Netscape は稼働していては消去できない。 閉 じておくこと。そして Windowsならパソコンも一度再起動した方がいいだろう。cert7.db には、追加した個人/他人/WWWのデジタルIDが入る。cert7.dbを消去すると、これ らの情報も消える。ただし、CAのデジタルIDは別ファイルのため消えない。 C:\Program Files\Netscape\Users\katou\key3.db, cert7.db, INDY IRIX 5.3 /usr/people/katou/.netscape/key3.db, cert7.db * デジタルIDの作成 [ CA用デジタルID ] /usr/local/ssl/openssl.cnf << openssl.cnf ファイルのオリジナルを取って置く。 ----------------------------- CA用デジタルIDを作成する際は、openssl.cnf |basicConstraints=CA:TRUE のパラメ−タの2ヵ所をこのようにする。 |nsCertType = sslCA, emailCA % CA.sh -newca ./demoCA/cacert.pem << -newca で cacert.pemと cakey.pem ができる。 ./demoCA/private/cakey.pem [ クライアント用デジタルID:方法1 ] /usr/local/ssl/openssl.cnf 認証局側でクライアント用デジタルIDの秘密鍵と公 ---------------------------- 開鍵を作る。 PKCS #12 形式でデジタルIDと秘密鍵 |basicConstraints=CA:FALSE を Netscape に渡すやり方である。デジタルIDには |nsCertType = client, email 公開鍵が入っている。 % CA.sh -newreq << これで ./newreq.pem ができる。 % CA.sh -sign << これで ./newcert.pem ができる。 % openssl pkcs12 -export -inkey newreq.pem -in newcert.pem -certfile ./demoCA/cacert.pem -out private.pkcs12 [ クライアント用デジタルID:方法2 ] Netscape ブラウザで HTML のタグ を実行し秘密鍵と公開鍵を作る。 秘密鍵は ブラウザに記録される。公開鍵が タグのレスポンスとして、SPKAC 形式のファ イルがWWWサ−バに返される。これをCAソフトにもってきてデジタルIDを発行する。 * CA用デジタルIDの取り込み % openssl x509 -in cacert.pem -outform der -out ccc.der << DER 形式にしておく。 1) MIME による /usr/local/apache/htdocs/index.html /usr/local/apache/conf/mime.types ------------------------------------ ---------------------------------- |TEST CA |application/x-x509-ca-cert der 2) CGI による /usr/local/apache/htdocs/index.html -------------------------------------- |TEST CA /usr/local/apache/htdocs/load-ca-cert.cgi ------------------------------------------------- |#! /bin/sh |echo "Content-Type: application/x-x509-ca-cert" |echo |cat cacert.der * クライアント用デジタルIDの取り込み 1) PKCS #12 形式のファイルによる % openssl pkcs12 .. -out private.pkcs12 で作ったデジタルIDを、katou.bin ぐらい にファイル名を適当にかえて、WWWアクセスか何かで Windows に取り込む。 取り込む 際には katou.p12 としてセ−ブする。そして暗号のところで [本人] [インポ−ト] をク リックする。拡張子が xxx.pkcs12 だと、[インポ−ト] で認識されなかった。 2) CGI による p1.cgi ------------------------------------------------- |#!/bin/sh |echo Content-type: application/x-x509-user-cert |echo Content-length: 3467 |echo |sed -n '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/p' < 2.pem [ 参考 ] application/x-x509-ca-cert : CA(認証局)のデジタルID application/x-x509-user-cert : WWWクライアントのデジタルID application/x-x509-server-cert : WWWサーバのデジタルID application/x-x509-email-cert : 他人の Email のデジタルID 3) デジタル署名付きメ−ルから デジタル署名の付いたメ−ルには、送り手のデジタルIDが添付されている。 * 参考:クライアント用デジタルIDでのアクセス制限 ------------------------------------------------------------------ | | |#SSLNoCAList << Disable CA list sending for testing とあるが。 |# SSLVerifyClient 2 |# SSLVerifyDepth 2 |# AuthType Basic |# AuthName Experimental |# AuthGroupFile /dev/null |# AuthUserFile /home/ben/www/users |# require valid-user | | (3) 認証局パッケ−ジ・ソフト * 名古屋工業大学の認証局パッケ−ジ `02/11 OpenSSL でいろいろやってみても、どうもおかしい。うまくいかないとだんだん頭の中が ぐちゃぐちゃになってきて、何がなんだか分からなくなってしまう。それでダメ押しで名 古屋工業大学のCAパッケ−ジを試してみることにした。INDY IRIX 5.3 にインスト−ル してみた。コンパイラは gcc でないといけない。./aicrypto/include/ok_okcs7.h の245 行目でエラ−が出てとまった。SignerInfo *sgi が *sig の誤りである。*sigは大域変数 なのか。この他 ./aicrypto/pkcs/p7_sign.c と pkcs/p7s_attr.c でも同様の誤りがあっ た。全部で *sgi を *sig に10箇所ぐらいなおした。 これで再度 gmake かけたらコン パイル成功した。ドキュメント通りCA用デジタルIDを、PKCS #12 形式 ca.p12として 作成し、Netscape Communicator に持っていたところ、問題なく入った。 % zcat AiCA-0.70.2.tar.gz | tar xvf - http://mars.elcom.nitech.ac.jp/security/ % cd AiCA-0.70.2 からダウンロ−ド。 % ./configure; gmake; gmake install % ls -F COPYRIGHT apps/ config.guess@ configure.in Makefile bin/ config.log install-sh@ Makefile.in ca/ config.status* lib/ README.j certs/ config.sub@ sample.list.csv aicrypto/ config.cache configure* testca/ % ls -F /usr/local/aica bin/ certs/ include/ lib/ [bin] --- aica, asn1view, certconv, certreq, certvfy, certview, newca.sh [certs]-- ailab.cer, ailab.crl, democa.cer, democa.crl, verify.idx [lib] --- aica.cnf, libaicrypto.a, libaissl.a % setenv PATH /usr/local/aica/bin:$PATH % newca.sh testca << ここはドキュメントに書いてある通りやった。 make new Certification Authority. generate private key (size 1024 bit) ........oo ..................oo input subject directory. select directory tag (input number) (1.C, 2.ST, 3.L, 4.O, 5.OU, 6.CN, 7.Email, 8.Quit)[1]:5 Organization Unit []: NIX select directory tag (input number) (1.C, 2.ST, 3.L, 4.O, 5.OU, 6.CN, 7.Email, 8.Quit)[6]:5 Organization Unit []: sample CA select directory tag (input number) (1.C, 2.ST, 3.L, 4.O, 5.OU, 6.CN, 7.Email, 8.Quit)[6]:8 Certificate DATA: serial number : 0 issuer : OU=NIX, OU=sample CA, subject: OU=NIX, OU=sample CA, notBefore: Tue Nov 28 09:06:48 2000 notAfter : Wed Nov 28 09:06:48 2001 do you sign here ? (y/n)[y]: y now signing .. Input Export Password: 1234567 Verifying - Input Export Password: 1234567 Update CA information. Succeeded to make new CA !! % cd testca;ls ca.cai ca.cer ca.p12 certs % certconv -cert ppp.der ca.p12 << ppp.der がCA用デジタルID。 これ要確認。 拡張子を認識して DER フォ−マットで吐き出 すのか。-der オプションが必要でないのか。 * certconv コマンドについて % certconv usage: certconv [outputs] file1 file2 .. -p12 file.p12 : output p12, input is certs & key pair. -p7b file.p7b : output p7b, input must have chain. -cert file.* : output cert (use with depth), input is p12,p7b,cer,pem. -crl file.* : output CRL, input is p12,p7b,crl,pem. -key file.* : output key, input is p12. -pem : cert,crl,key output format [PEM] :default -der : cert,crl,key output format [DER] -depth : set chain depth for output (0..top) -noenc : save private key with no encryption [ 使用例 ] % certconv -p12 katou.p12 newcert.cer newkey.key newcert.cer と newkey.key というファイルから PKCS #12 形式のファイルに変換する場 合である。オプションの file1 file2 .. は入力するファイルを示す。上記説明の usage の -p12 file.p12 から -key file.* は、変換したファイルのフォ−マットの指示である。 出力するファイルの形式は PEM と DER 形式がある。何も指示しないと -pem オプション が暗黙でとられ、PEM 形式となる。DER 形式にしたければ -der を付ける。例えばApache 用に aaa.p12 というファイルを発行したとする。 % certconv -cert ppp.pem aaa.p12 << ppp.pem という Apache のデジタルID。 % certconv -pem -cert ppp.pem aaa.p12 << 上のコマンドはこれと同じことである。 * 名古屋工業大学の岩田彰研究室開発のフリ−ソフト `22/09 認証局のソフトは UNIX 用に AiCA、その Windows 版の EasyCert がある。X.509 電子証 明書バ−ジョン3の拡張にも十分対応し、証明書の更新や破棄、CRL の作成もできるよう になっている。EasyCert は認証局本体の EasyCert、各種形式の変換をするCertConv、そ の表示をする CertView からなる。AiCA、EasyCert 両者は暗号ライブラリ AiCryptoを用 いて作られている。これは暗号化を操るC言語の関数である。この他にも、DOS コマンド の暗号メ−ルソフト S/MIME Messenger、OCSP モジュ−ルがある。 2002/09/02 岩田研究室のサイト見たら、EasyCert の製品版がNECから出ますと書いて あった。http://www.ace.comp.nec.co.jp/certworker/。CertWorker Personal 19,800 円。 CertWorker Professional 198,000 円。Windows 95 から各種対応。 公的なデジタルID である "法務省法人代表者証明書"の申請、取得、休止ができるという。Register という。 次のソフトが今後、予定されている。LDAP プラグイン、LDAP サ−バに証明書を出力、検 索ができる。USB ト−クンプラグイン for eToken、eToken により鍵ペアの作成を行う。 * 参考 `22/08 雑誌掲載の EasyCert の説明 >「SoftWare Design」2001/12, P.66〜76, 北川剛氏、 "最後の決め手 プライベ−ト認証 局を作る"。「月刊 NETWORK WORLD」2002/08 創刊号, (株)IDGジャパン、 本屋で立 ち読みして、ペラペラめくっていたらここにも EasyCert 使用例がちょっと載っていた。 断片的な記事で、どこかにこの雑誌があったら、ちらっと見る程度でいい。 「インタ−ネット暗号化技術 〜PKI,RSA,SSL,S/MIME.etc〜」 > 岩田彰先生監修。2,400 円+税。2002/05/25 発刊。http://www.astf.or.jp/ (愛知)科 学技術交流財団による PKI(公開鍵基盤)利用推進研究会、第6回6月29日。名古屋で の公開シンポジウム。ここで 2,000 円で販売してくれていたので購入した。 岩田彰先 生が主催。ECOM の黒岩氏も来席。第1回目が平成13年6月9日。 http://www.cacanet.org/ NPO 法人電子認証局市民ネットワ−ク福岡 > "ゼロから始めるインタ−ネットセキュリティ講座"。この記事がデジタルIDに関して 一番よくまとまっている。メ−リングリストあり。2000年11月頃、CAをテスト していて、いい加減悪戦苦闘した後に見つけた。もっと早く気付けばよかった。 RSA セキュリティ(株)監修の本 読んでない >「オフィシャルガイド/暗号化」4,200 円+税。2002/02/28 発刊。翔泳社。 「PKI eセキュリティの実践と運用」4,800 円+税。2002/04/16 発刊。 「Oracle+UniCERT による電子認証局構築・設定ガイド」 北川剛著、翔泳社、2001/09 刊。 > 日本ボルチモアテクノロジ−ズ監修・訳。3,500 円+税。UniCERT v3.5.1 と Oracle8i によるプライベ−ト認証局の設定、Oracle Internet Direcrtory など。読んでない (4) 個人用デジタルIDを発行する `22/07 * Windows 98 で EasyCert を使ってみる ( Version 091b2e ) EasyCertSetup091b2e.lzh 輸出可能版をダウンロ−ドする。秘密鍵 DES 56bit、PKCS #12 内の秘密鍵は RC2 40bit で保存される。マウスでピックしてアイコンの Lhasa に通すと C:\WINDOWS\Profiles\katou\デスクトップEasyCertSetup091b2e\EasyCertSetup-exp\フォ ルダができた。ここから Setup.exe を実行すると、C:\Program Files\EasyCert\ ディレ クトリができ、コマンド EasyCert, Certview, Certconv が入る。ここに、ユ−ザが作る 認証局ができる。C:\WINDOWS\スタ−トメニュ−\プログラム\EasyCert\ には、 ショ−ト カットの EasyCert, Certview, Certconv ができる。 注意:EasyCertSetup091b2e では有効日数の設定ができない。最初起動した際に、有効日 数を入れる画面が出て来る。365 日になっているが、値を変えても実際、発行されたデジ タルIDの有効期限は7日のままである。個人用デジタルIDも、最長7日に制限される。 デジタルIDの Validity の notBefore,notAfter の日付けをチェックされたい。他プロ ファイルの操作がやや不安定な気がした。2002年9月初め時点、EasyCertSetup090b1 英語版もダウンロ−ドできる。これは有効日数は設定できるようである。以前ダウンロ− ドした EasyCertSetup085 英語版など古いのは、もはや置いてない。 * 先ずはル−トCAを作る EasyCert 最初の起動で "CA構築ウィザ−ド" が走る。 これで独自の認証局としてル− トCAを作り、ル−トCAのデジタルIDを以下のように発行する。以降、ル−トCAは 単にCAとも呼ぶことにする。証明書はデジタル証明書、デジタルIDのことである。 1.新しいCA(認証局)を構築します。CAの名前を入れて下さい、NIX1。 2.証明書と秘密鍵を新規に作成するにチェック。 3.公開鍵暗号は RSA、512 bit 標準のままとする。 4.Subject を設定する。C=JP, O=NIX, CN=TestCA, EMAIL=admin@nix.co.jj。 5.証明書有効日数と CRL 有効日数は7日。091b2e では設定できない。 6.CA証明書に付加する拡張情報の設定。CA True, SSL CA, S/MIME CA。 7.CA用 PKCS#12 ファイル保護のパスワ−ド、admin。 ------------------------------------ | C:\Program Files\EasyCert\NX1 cert, req はディレクトリ。 |----------------------------------- ca.cer がCA用のデジタルID。 | ■ ■ □ □ □ ca.p12 は PKCS #12 形式のファイルで、 | cert req ca.cai ca.cer ca.p12 CA用のデジタルIDと秘密鍵が入ている。 * Netscape Communicator 用に個人用デジタルIDを発行する ( Version 4.78 で確認 ) CA False, SSL Client, S/MIME。 C=JP O=NIX CN=Katou EMAIL=katou@nix.co.jj ------------------------------------ Netscape Communicator 用に、X.509 拡張子 | Password Input: Save Private Key を設定した、プロファイルを EasyCert に追 |----------------------------------- 加し、"Netscape1" という名前にした。 | [ katou ] [ PKCS #12 形式で保存する ] C:\マイドキュメント\0000002.p12 とする ------------------------------------ --------------------------------- | Password Input: Open Private Key ---> | Password Input: Export PKCS#12 |----------------------------------- 次の |-------------------------------- | [ katou ] 画面 | [ KATOU ] * Netscape Communicator 本人の証明書 [Communicator]->[ツ−ル]->[セキュリティ情報]->[本人] をクリックする。 {証明書をインポ−ト} をクリックして、[ パスワ−ド 1234567 ] を入れる。 インポ−トするファイル名: マイドキュメント\0000002.p12 を開く。 ---------------------------------------------------- | インポ−トするデ−タのパスワ−ドを入力して下さい | | [ KATOU ] | うまく行けば、証明書のイン ---------------------------------------------------- ポ−トに成功しましたと出る。 [署名者] のところにも、 CAのデジタルIDである TestCA-NIX が自動的に入っている。 ただし、この時点ではまだ Katou 氏のデジタルIDは有効になっていない。[本人] の画 面の {確認} をクリックすると、"証明書は信用されていません" と出る。[署名者] 画面 の {編集} をクリックし、以下をチェックする。これで [本人] と [署名者] の証明書を 確認すると、正しく確認されたと出るはずである。もし何かおかしければ、一度パソコン を再起動した方がいいだろう。PIN 入力でも、1回では認識しない場合もあるようである。 ----------------------------------------------------------- | | [署名者] の画面で |この証明書は証明書発行人に属しています |〆この証明書発行人をネットワ−クサイトの認証用に受け付ける |〆この証明書発行人を電子メ−ルユ−ザの認証用に受け付ける * メ−ルによる暗号化と署名のテスト Netscape Messenger による S/MIME メ−ルを使って、 暗号化と署名のテストをしてみる。 他の人には、相手のデジタルIDがないとメ−ルを送ることができないので、ここではテ ストとして自分宛にメ−ルを送ってみる。暗号化したメ−ルが返ってきたら、そのままで は読めない。PIN というパスワ−ド、ここでは 1234567 を入れること。 パスワ−ドにつ いてはすぐ下を参照のこと。署名だけした場合は、メ−ル本文はそまま読める。 暗号化した場合 : メ−ルを読む時に PIN を入れる。 署名した場合 : メ−ルを送る前に PIN を入れる。 添付ファイルはどうなる?。添付ファイルといっても MIME で区切られた全文の内の文字 列でしかない。画像デ−タも BASE64 などで文字列に変換されている。当然、添付ファイ ルも暗号化される。メ−ルに添付ファイルがあることすら分からない。添付ファイルごと に PIN を入れよと画面が出た。 また、添付ファイル別に暗号化する、しないという設定 項目は Netscape Messenger には見当たらなかった。 * Netscape Communicator でのパスワ−ドの保護 [Communicator]->[ツ−ル]->[セキュリティ情報]->[パスワ−ド] をクリック。 ---------------------------------------------------------------- |セキュリティ情報| Communicator パスワ−ドは、あなたの証明書を |パスワ−ド | 保護するために使用されます |Navigator | ------------------ |Messenger | |パスワ−ドの変更| |証明書 | ------------------ | 本人 | | 他人 | Communicator によるパスワ−ドの確認: | Webサイト | ○ 証明書が最初に必要になった時 << これがデフォルト。 | 署名者 | ● 証明書が必要なとき毎回 |暗号化モジュ−ル| ○ アクティブでなくなってから [30] 分後 ※[パスワ−ドの変更] をクリックすると、Communicator Certificate DB のパスワ−ド変 更画面が出てくる。古いパスワ−ドを入れてから、新しいパスワ−ドを入れる。 -------------------------------------- 暗号化されたメ−ルを読む時、このよう | パスワ−ドの入力 な画面が出て来る。パスワ−ドを入れる |------------------------------------- と復号化される。"● 証明書が必要なと | パスワ−ドまたはピンを入力して下さい き毎回" にすると、1個1個のメ−ルで | Communicator Certificate DB. パスワ−ドを入れる。 "証明書が最初に | ------------------------------- 必要になった時" にしておくと、1個の | | 1234567 | メ−ルをパスワ−ドを入れて読むと、全 | ------------------------------- 部のメ−ルが復号化される。Netscapeを | 起動し直すと、また暗号化される。 * EasyCert について気付いたこと ----------------------------- ここでは "Netscape1"というプロファイルを追加した。 | - easycert しかし、2つ目を追加しようとするとフリ−ウェアバ |---------------------------- −ジョンのためできませんと出た。 | File 編集 CA操作 表示 |---------------------------- Netscape 用に発行した個人用デジタルIDは NX1 の | + -- Request "Netscape1" にできる。ここクリックすると、発行一 | | 覧がでる。Microsoft 用のは "SMIME user" に入る。 | + -- Windows Store | | これらデジタルIDの更新ができる。一覧の 0000002 | = -- NX1 など [Serial No]を、右ボタンでクリックし、メニュ | |--- Request List −の [更新] を押す。有効日数がデフォルト設定のま | |--- Key List まなら、今日から7日後までの有効に変わる。ただし | | CAデジタルIDの有効期限を越えることはできない。 | =--- Cert Profiles | | |- SMIME user CAの有効期限を更新するには、画面の "NX1"をクリ | | |- Netscape1 ックし、[ Basic CA Settings ] の画面を出し "〆ユ | | |- Cross Cert −ザ証明書向けの拡張情報設定を更新に適用する" を | | チェックし、[CA証明書更新] を押す。 CAに関係 | =--- CRL Profiles するファイルは、C:\Program Files\EasyCert\NX1 に | |- ARL ca.cai, ca.cer, ca.p12 がある。 肝心のCAのデジ | |- CRL タルID ca.cer は何故か更新されなかった。仕方な | |- CRL-All いので更新した ca.cer は ca.p12 から取り出した。 * EasyCert で個人用デジタルIDを一括作成する 発行ユ−ザの情報を列挙したファイルを CSV 形式で用意し、 一括大量発行のメニュ−を 実行する。CSV ファイルは Excel なんかでデ−タを作って CSV 形式で吐き出すのがいい だろう。別に手作業で書き並べてもいい。注意、C:\Program Files\EasyCert\sample.csv この中で説明されている書式は、違っているようである。以下のように書いたらうまくで きた。このファイルの内容では Netscape のブラウザとメ−ルで使えるように、EasyCert でプロファイルを "Netscape1" という名前で作ったとする。 例えば nix.csv ------------------------------------------------------------------------------- |"Netscape1",7,"C=JP/O=NIX/CN=Katou/EMAIL=katou@nix.co.jj","",rsa,512,1,"katou" |"Netscape1",8,"C=JP/O=NIX/CN=Haruo/EMAIL=haruo@nix.co.jj","",rsa,512,1,"haruo" 7 はシリアルナンバ。C=JP のところは DN 値、 デジタルIDでは subject: を示す。 rsa は暗号の種類で固定。512 は暗号鍵のサイズ。1 は PKCS#12ファイルを作成する 印し。"katou" は PKCS#12ファイルと秘密鍵のパスワ−ド。 [CA操作]->[一括大量発行]-> ファイル指定( nix.csv ) -> "〆\p12以下にPKCS#12ファ イル" を出力。これで C:\Program Files\EasyCert\NIX1\p12\0000007.p12, 0000008.p12 というようにファイルができた。NIX1 ディレクトリに p12 というディレクトリができる。 ログが NX1\masscrt.log にできる。ログは [一括大量発行] 操作する毎に新規になる。 注.1) シリアルナンバを例えば 9 にし、同じ DN 値で作成しようとしてもできない、 す でにありますと、メッセ−ジが masscrt.log に出る。 DN 値を CN=Katou2 とかに 変えれば作成できる。しかし一括作成でなく、画面で作成するのはできる。上書き するがいいかというようなメッセ−ジが出て、同じ DN 値で作成できた。 注.2) 0000007.p12 をメ−ルの添付ファイルとして送ると、Netscape Messengerでは未定 義のファイルタイプとなり、いったんファイルに保存することになる。直接、証明 書の [本人] と [署名者] のところに入れることはできない。 (5) WWWサ−バ/クライアント相互認証 `22/08 * INDY ヘのホスト名(FQDN)でのアクセス : 内部ネットにはDNSサ−バは設置して □ DNS □ Router いない。基本的に社内のサ−バのホスト | named | にアクセスするのは、IPアドレスで行 ------------------ う。しかし INDY が社内のイントラネッ Windows 98 INDY | ト・サ−バで http://indy/ というよう □ □ WWW □ FireWall にアクセスしたいとする。各Windows パ |.1 |.2 | ソコンで C:\WINDOWS\hosts ファイルに -------------------------------------- 192.9.10.2 INDY と記述する。 192.9.10.0 内部ネット * Apache WWW用のデジタルIDを発行する [ EasyCert をセットする ] SSL Server は、Netscape WWWサ−バ CA False, SSL Server 用に指定する拡張子である。 Apache で C=JP O=NIX CN=INDY EMAIL=admin@nix.co.jj はいらないと思うが、一応付けてみた。 ------------------------------------ C=INDY というのは、 インタ−ネットの | Password Input: Save Private Key WWWサ−バでは、 そのホストの FQDN |----------------------------------- を指定する。www.nix.co.jj といったの | [ apache ] である。ここでは FQDN として INDY と いうホスト名を指定している。 [ PKCS #12 形式で保存する ] C:\マイドキュメント\0000003.p12 とする ------------------------------------ --------------------------------- | Password Input: Open Private Key ---> | Password Input: Export PKCS#12 |----------------------------------- 次の |-------------------------------- | [ apache ] 画面 | [ APACHE ] C:\マイドキュメント\0000003.p12 を INDY:/usr/local/apache/conf/ にコピ− % certconv -cert cert.pem 0000003.p12 << xxx.p12からWWWサ−バのデジタルID Input PKCS#12 Password: APACHE を取り出す。 % certconv -key key.pem 0000003.p12 << xxx.p12からWWWサ−バの秘密鍵を取り Input PKCS#12 Password: APACHE 出す。 先ずは PKCS #12 ファイルにアク | スするパスワ−ドを入れる。 次に秘密鍵 please input output key pass. にアクセスするパスワ−ドを入れる。 Input PASS Phrase: apache Verifying - Input PASS Phrase: apache C:\Program Files\EasyCert\NIX1\ca.cer もコピ−する % certconv -cert ca.pem ca.cer << ca.cer はCAのデジタルID。certconv は AiCA のコマンドである。 [ Apache の制御ファイルに cert.pem, key.pem, ca.pem をセット ] % httpsdctl start Reading key for server INDY:443 Enter PEM pass phrase: apache << WWWサ−バの秘密鍵にアクセスするパスフレ−ズ。 Launching ... /usr/local/apache/bin/gcache pid=28748 httpsdctl start: http started /usr/local/apache/conf/httpsd.conf ------------------------------------------------------ |ServerName INDY |DocumentRoot "/usr/local/apache/htdocs" |ServerType standalone | 途中略 |SSLEnable | |# Set the CA certificate verification path (must be PEM encoded). |# (in addition to getenv("SSL_CERT_DIR"), I think). |#SSLCACertificatePath /usr/local/apache/conf これはコメントでいい。 | |# Set the CA certificate verification file (must be PEM encoded). |# (in addition to getenv("SSL_CERT_FILE"), I think). |SSLCACertificateFile /usr/local/apache/conf/ca.pem CA(認証局)の証明書。 | |# Point SSLCertificateFile at a PEM encoded certificate. |# If the certificate is encrypted, then you will be prompted for a pass phrase. |# Note that a kill -1 will prompt again. |# A test certificate can be generated with "make certificate". |SSLCertificateFile /usr/local/apache/conf/cert.pem WWWサ−バの証明書。 | |# If the key is not combined with the certificate, use this directive to |# point at the key file. If this starts with a '/' it specifies an absolute |# path, otherwise it is relative to the default certificate area. That is, it |# means "/private/". |SSLCertificateKeyFile /usr/local/apache/conf/key.pem WWWサ−バの秘密鍵。 | |# Set SSLVerifyClient to: |# 0 if no certicate is required |# 1 if the client may present a valid certificate |# 2 if the client must present a valid certificate |# 3 if the client may present a valid certificate but it is not required to |# have a valid CA |SSLVerifyClient 2 値が 1 から 3 はクライアントのデジタルIDをチェックする。下 | の方で絵を描いて説明する。ちょっと意味が分かりにくい。 | |SSLVerifyDepth 10 クライアントのデジタルIDをチェックする場合に使う。CAの階 | 層を10までさかのぼってチェックするということ。 | |# Translate the client X509 into a Basic authorisation. This means that the |# standard Auth/DBMAuth methods can be used for access control. The user name |# is the "one line" version of the client's X509 certificate. Note that no |# password is obtained from the user. Every entry in the user file needs this |# password: xxj31ZMTZzkVA. See the code for further explanation. |#SSLFakeBasicAuth これでアクセス制限をかけることができるが、ちょっとトリッキ− | なやり方だと思う。あまり利用はお勧めでない。 * Netscape Communicator での動作確認 ( SSLVerifyClient 2 の場合 ) ・[セキュリティ情報]->[本人] には 'Katou' のデジタルIDがある。 [署名者] には TestCA-NIX あり、[Webサイト] は何もなし。 ・[Communicator]->[ツ−ル]->[セキュリティ情報]->[Navigator] の Webサイトへの身分証明のための証明書: [毎回尋ねる ▼] ・[Communicator]->[ツ−ル]->[セキュリティ情報]->[パスワ−ド] の Communicator によるパスワ−ドの確認: ●証明書が必要なとき毎回 a) https://idny/ とやる。"証明書の選択" という画面が出て、[続ける]をクリックする と "PIN 入力画面" が出る。1234567 と入れてアクセスできる。 b) https://192.9.10.2/ とやる。"証明書の確認" 画面が出て、次に "証明書の選択" 画 面が出る。そして "PIN 入力画面" が出る。1234567 と入れてアクセスできる。"証明 書の確認" はパソコンを起動し Netscape を最初に起動した場合に出るみたいである。 ------------------------------------------------------- | 証明書の選択 | | サイト 'indy' はクライアント認証を要求しました | | 以下が、サイトの証明書です: |------------------------------------------------------ | 証明書: NIX | 署名者: NIX | 暗号化: Highest グレ−ド(RC4,128ビット秘密鍵) [詳細] |------------------------------------------------------ | 証明書を選択して下さい: [Katou ▼] | | [キャンセル] [続ける] ------------------------------------------------------- ・[Communicator]->[ツ−ル]->[セキュリティ情報]->[Navigator] Webサイトへの身分証 明のための証明書: [自動選択 ▼] または [Katou ▼] にすると、"証明書の選択" 画 面は出てこなくなる。いきなり "PIN 入力画面"が出る。さらに [パスワ−ド] のとこ を、"●証明書が必要になったとき" にすると一度 PIN 入力したら、Netscape を開け ている間は "PIN 入力画面" は出なくなる。 ・[署名者] の画面で、"この証明書発行人をネットワ−クサイトの認証用に受け付ける" にチェックしていないと、[署名者] と [本人] にエントリを入れていても、[確認]で "証明書は信用されていません" と出る。この場合 [署名者] がないものとみなされて、 "新しいサイト証明書" 画面から表示され、最後に "証明書の選択" 画面が出る。 ・[本人] のデジタルIDがなかったら。 "ユ−ザ証明書はありません" という画面が出 て終わり、アクセスできない。画面には、 あなた自身を証明する個人証明書がありま せん、と書かれている。SSLVerifyClient が 1 か 3 ならアクセスできることになる。 * クライアントとの相互認証 [ SSLVerifyClient 1 の場合 ] --------------------- WWW ブラウザのデジタルIDを署名して | ----- ----- ----- | ブラウザ いるCAと同じCAがWWWサ−バ | |CA1| |CA2| |CA0| | --------- --------- にあればOKという。また、ブラウ | ----- ----- |---| | | CA1 | | CA2 | ザのデジタルIDはなくても構わな | |web| | |-------| |-------| い。CA1,CA2 を入れるディレクトリ | ----- | | katou | | tarou | は SSLCACertificatePath で指定す --------------------- --------- --------- る。CA1,CA2 は異なるCAである。 [ SSLVerifyClient 2 の場合 ] --------------------- WWW WWWとブラウザのデジタルIDの | ------- | ブラウザ CAは同じでなければならない。ブ | | CA0 | | --------- --------- ラウザは必ず、WWWサ−バの要求 | |-----| | | CA0 | | CA0 | に従い、ブラウザのデジタルIDを | | web | | |-------| |-------| 提示しなければならない。ブラウザ | ------- | | katou | | tarou | に複数のデジタルIDがある場合は、 --------------------- --------- --------- 該当のをユ−ザが選ぶことになる。 [ SSLVerifyClient 3 の場合 ] --------------------- WWW 何でもいいからブラウザ用のデジタ | ------- | ブラウザ ルIDを提示すればOKという。ま | | CA0 | | --------- --------- た、クライアント用デジタルIDは | |-----| | | CA1 | | CA2 | なくても構わないという。HTTPアク | | web | | |-------| |-------| セスの環境変数で、細かな状態が分 | ------- | | katou | | tarou | かる。それでアクセス制御したい場 --------------------- --------- --------- 合などに意味があるのかも知れない。 * メモ X.509 形式のファイルには、デジタルID、秘密鍵、CRL ファイル、CSR がある。 X.509 形式のデジタルIDでは、DN は本人の識別子 subject である。デジタルIDには公開鍵 が入っている。秘密鍵はパスワ−ドで保護される。 PKCS #12 形式のファイルには、デジタルIDや秘密鍵や CRL を複数入れることができる。 個人用のデジタルIDとCAのデジタルIDを入れることもできる。PKCS #12ファイルは、 パスワ−ドで保護される。 WWWアクセスで双方向認証するには、Netscape などブラウザにも秘密鍵がいる。 秘密 鍵を使って認証の確認作業が行われる。ランダムな文字列を作り、それのハッシュ値をと り、公開鍵で暗号化する。相手は秘密鍵で複合化し、うんぬんという作業をする。 NetAttest CA 中規模モデル 438Wx44Hx292D 5.0Kg、300万円。大規模モデルはオ−プンプ ライス。ユ−ザ自身で証明書を申請、発行ができる。証明書一括発行ツ−ルを利用できる、 証明書発行に利用できるデ−タベ−スは AD、LDAP、CSV。参考に `2h/09/E 追記。