- PR -

Java で クライアント証明書の作成をするには?

投稿者投稿内容
未記入
常連さん
会議室デビュー日: 2004/09/10
投稿数: 33
投稿日時: 2005-08-09 20:11
keytool で自己署名証明書を作成できることは
判っているのですが、クライアント証明書(ユーザ証明書)を
作成できないみたいなのです。
もし、Java で作成するにはどのようにしたら良いのでしょうか?

ご存知の方はご教授の程、宜しくお願い致します。

いっきゅう
大ベテラン
会議室デビュー日: 2004/04/04
投稿数: 153
お住まい・勤務地: 兵庫
投稿日時: 2005-08-10 09:30
未記入さんが電子証明書を発行しクライアント認証するための
証明書をJavaで用意したいというのでしたら、
PKCS11形式のリクエストを発行して、CA(認証局)から
それにリクエストファイルに対し、クライアント証明書(ユーザ証明書)を
発行することになります。

PKCS11形式のリクエストを発行するのはJavaのSDK付属のkeytoolでできますが
CAはちょっと、、OpenSSLとかを使うのが手っ取り早いかと思います。

CAの部分の処理をJavaでというのはちょっと、、
でも昔々、一部証明書に関する処理をJNIでOpenSSLのAPIをコールするという
面倒なことをやったことがありますが、、
未記入
常連さん
会議室デビュー日: 2004/09/10
投稿数: 33
投稿日時: 2005-08-10 10:45
いっきゅうさん、ご回答ありがとうございました。

> CAの部分の処理をJavaでというのはちょっと、、
> でも昔々、一部証明書に関する処理をJNIでOpenSSLのAPIをコールするという
> 面倒なことをやったことがありますが、、

実はプライベートCAを作ろうと思っていたのですが、
やはり、OpenSSLなどを使うしかないのですか。。
つばさ
ベテラン
会議室デビュー日: 2005/02/05
投稿数: 54
投稿日時: 2005-08-10 21:59
つばさです。

参考までに、

プライベートCAならば、例えば以下のようなものがあります。
http://mars.elcom.nitech.ac.jp/Research/MM/security/easycert/
http://www.sgoma.org/doc/idg_networkwold_pki01.pdf

ほかには、
http://www.cacert.org/
というのもあります。

いっきゅう
大ベテラン
会議室デビュー日: 2004/04/04
投稿数: 153
お住まい・勤務地: 兵庫
投稿日時: 2005-08-11 09:36
JavaでCAを自作するというのは大変かと思いますが
ちょっと探しましたらこのようなものもありました。
http://ejbca.sourceforge.net/
JBossによるWebアプリケーションですがJavaで実装されているようですので
自作する際の参考程度にはなるとおもいます。
未記入
常連さん
会議室デビュー日: 2004/09/10
投稿数: 33
投稿日時: 2005-08-11 11:27
つばささん・いっきゅうさん、
ご回答ありがとうございました。

OpenSSL 以外にも色々あるのですね。

とりあえず、OpenSSL で証明書を生成し、他の機能は Java で
作ろうと思っているのですが、
Java でプライベートCAを作るのが難しいのはなぜなのでしょうか?

もし、ご存知でしたらご教授の程よろしくお願い致します。
いっきゅう
大ベテラン
会議室デビュー日: 2004/04/04
投稿数: 153
お住まい・勤務地: 兵庫
投稿日時: 2005-08-11 11:50
> Java でプライベートCAを作るのが難しいのはなぜなのでしょうか?

未記入さんが要求されるレベル(商用に可能とか)にもよりますが、、
・ 鍵と証明書のライフサイクル管理
・ 認証機関(CA)機能
・ 登録機関(RA:Registration Authority)機能
・ 証明書の保管、運用管理用ディレクトリの維持
・ 完全な証明書失効システム
・ 鍵のバックアップとリカバリの仕組み
これらのシステムを大量の関連RFCを読みながら、
・ タイムスタンプ機能
・ 機密性のある通信
・ 認証
・ 否認防止
・ 完全性
が保たれるシステムを組むのは想像しただけで大変かなと思います。
難しかしいくはないですが実際やるのは多大な苦労があると思いますが
こんな回答でどうでしょうか?

[ メッセージ編集済み 編集者: いっきゅう 編集日時 2005-08-11 11:52 ]
クール
会議室デビュー日: 2005/06/11
投稿数: 6
投稿日時: 2005-08-11 12:34
手前味噌になりますが・・・

CA証明書、CRL、およびEE(サーバー、クライアント)証明書発行のJAVAライブラリを作成し数社に納品しました。
ネットスケープ、IEとのSSLハンドシェイクの動作確認、ProFTPDでのFTP-SSLの疎通テストをクリアした証明書で、CAは2階層構造で運用されているようです。
又、OPENSSLとの暗号化PEM/DERの互換性も確保しました。

SUNの非公開APIは、ソースを解析するとX509証明書に関するAPIが全て含まれているので、
クラス数にして30前後で済みます。

但し、利用用途は公的PKI導入前の数ヶ月のテスト運用期間の使用に限るとの条件にしました。
CAの責任は、プライベートCAだとしても、昨今の状況では重いものだとの認識からです。

実際は、OCSPレスポンダ、FTP-SSLクライアントのJAVAライブラリも納品しましたが、
PKIは証明書があれば良いわけではなく、関連技術も必要になります。

PKIのIはインフラなので、導入費用も、ランニングコストも覚悟の上で導入を決めるのが正論かと思います。

諸先輩が言われている通り、実装は簡単でも運用は難しいのがPKIかと思います。

スキルアップ/キャリアアップ(JOB@IT)