QA@IT

Webメールのリバースプロキシ用クライアント証明書

3296 PV

Webメールのリバースプロキシ用(クライアント証明書
でアクセスを制御)に、

1.おれおれCA証明書
2.サーバ秘密鍵
3.サーバ証明書
4.クライアント証明書
をOpenSSLで作ろうとしています。

サーバ証明書では、openssl.cnfで、
 nsCertType = server
としない(nsCertTypeの設定をすべてコメントアウト)
で良かったですが、
クライアント証明書では、
 nsCertType = client, email
が必須

という認識で良いでしょうか?

証明書の作り方がおかしいと思い、2万かけて売っている
証明書(サーバー証明書)を手に入れやってみたら全く同じ
エラー(証明書ベースの認証に失敗しました)となり、

サーバ証明書とクライアント証明書は別物で、「すべての
目的の」証明書にクライアント証明書を含まない
(「すべての」のくせに「すべて」で無い!!!)
としか思えず、そうするとopenssl.cnfの内容を変えるのが
良いように思えたからです。

あと、openssl.cnfをいちいちサーバ用とクライアント用に
切り替えるのが面倒なので、[v3_req]だとかの隣に、
[v3_cli](仮称)を作り、./CAもいじってusageに、
 ./CA -newcli 目的の名前
が出来る様にするのも有りですよね?

少々煮詰まってきています。なにとぞご助力をお願いいたします。

  • 個々のクライアントごとに鍵ペアを作り、個々のクライアントごとに証明書要求を作り、個々のクライアントごとにCAからクライアント証明書を得るということは理解できますか?またサーバはサーバで鍵ペアを作り、サーバの証明書要求を作り、CAからサーバ証明書を得るので、サーバ証明書とクライアント証明書とは、目的も違いますが、それ以前に証明する対象(サブジェクト)が別のものだということは理解できますか?
    -
  • いままで(売り止めの)クライアント証明書作成ツールを使っていたのですが、そこではクライアント証明書のcommon nameは何でも良かったので、サーバ証明書(common nameはサーバ名)で兼用しようとしたのです。でもだめでした。そこは理解しました。そこで、-extensionに差分を付けたいのでサーバ証明書とクライアント証明書の差分はなにか知りたかったのです。 -

回答

extensionの差分ですが、Extended Key UsageにserverAuthとclientAuthがありますので、それで区別すればいいのではないでしょうか。man x509v3_configのExtended Key Usageを見て下さい。

extendedKeyUsage = clientAuth
keyUsage = critical,digitalSignature

nsCertTypeはDEPRECATEDなので、現在はあまり気にする必要ははないように思います。man x509v3_configのDEPRECATED EXTENSIONSを見て下さい。

openssl.cnfを分割するかどうかは好きなやり方でよいと思います。

編集 履歴 (0)
  • これだと思います。本当にありがとうございました。しかしそれにしても、デフォルトのopenssl.cnfは何年も前から(Mozilla全盛の頃から)全く変わってないという事でちょっと意外でした。 -
ウォッチ

この質問への回答やコメントをメールでお知らせします。