coLinux日記

coLinuxはフリーソフトを種として、よろずのシステムとぞなれりける。

OpenSSLについて その3

2007-02-09 22:31:27 | OpenSSL
引き続き OpenSSL 0.9.8a について見てみます。

公式の CA に署名を依頼する場合は、秘密鍵と CSR を作るわけですが、その CA の指示にしたがって作成するべきです。例えば、以下のような方法が一般的です。
openssl genrsa -des3 -out private.key 1024
openssl req -new -key private.key -out private.csr

つまり、openssl genrsa で秘密鍵を作り、それから openssl req で CSR を作ります。有効期限は、CA で署名する時に指定するはずです。これで認証会社から署名された証明書 *.crt が送られてきます。coLinux ではこれを利用する人はまずいないと思いますが。

さて、前回作成された証明書はこのままですとブラウザで表示するときに警告がでます。そこで、特定少数の人が ssl を利用してアクセスする場合を想定すると、あらかじめ上で作成した CA証明書 の cacert.pem を配布することになります。 Windows 上では、署名された証明書のファイル名 cacert.pem を cacert.crt とすれば、「セキュリティ証明書」として認識されますが、der 形式?に変換して配布するのが良いみたいです。der 形式に変換するには、
# cd /usr/local/CA
# openssl x509 -in cacert.pem -outform DER -out cacert.der

これを、Windows に持っていって開けば「証明書」ウィンドが表示されます。ここで、「証明書をインストール」をクリックすれば、Internet Explorer 用に証明書をインストールできます。

FireFox にインストールするには、「ツール」→「オプション」→「詳細」
→「証明書を表示」 → 「認証局証明書」 →「インポート」 → ファイル cacert.der を選択すると、「証明書のインポート」ウィンドが表示されます。

「この認証局によるWebサイトの識別を信頼する」をクリックしてから「OK」をクリックすると、「証明書マネージャ」ウィンドウで証明書名と発行者名に
Example Ltd
fedora.example.co.jp
のように表示されます。

ところが、一見うまくいったみたいですがこれがうまくいきません。

どうやら、正しい認証局証明書の認識ができないようです。そこで、FireFox の「証明書ビューア」を使って調べてみました。「証明書ビューア」の「詳細」に問題ない公式の CAの証明書の1つは、

Netscape Certificate Type が Not Critical SSL 認証局 Email Certificate Authority オブジェクトへの署名者

になっています。これが、(nsCertType : openssl.cnf 内の名前) に関連するもののようです。
また、Certificate Key Usage が (KeyUsage) に対応するようです。
証明書の中には、nsCertType または、KeyUsage のどちらかまたは両方が入っているようです。
また、Certificate Basic Constrains が (basicConstraints) に対応しており、
basicConstrains = critical,CA:true

と指定すると、Certificate Basic Constrains のフィールドの値が、
Critical
Is a Certificate Authority
Maximum number of intermediate CAs: unlimited

となるらようです。最後の行を変えるには、CA:TRUE, pathlen:0 のように pathlen を付ければいいみたいです。ここで、Is a Certificate Authority となっているのが重要らしいです。

Windows の「証明書」ウィンドウではどう表示されるかというと、「詳細」で「基本制限」フィールドの値が、
Subject Type=CA  Path Length Constraint=None 

と表示されるようです。CA:FALSE なら、
Subject Type=End Entity  Path Length Constraint=None 

みたいです。前回作った証明書では、CA:FALSE が指定されているのが今回の問題点の理由らしいことが分かりました。 そこで、公式な CA と同じ形式になるように、ためしに CA の証明書を作るときに、CA:ture となっている v3_ca セクションを使うように、-extensions v3_ca オプションを指定したら、ブラウザで参照時にエラーになってしまいました。

ということは、自己署名型の CA を作るときと、通常のサーバ用の証明書を作るときに openssl.cnf は直して使う必要があるようです。

続きは次回にしたいと思います。

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« OpenSSLについて その2 | トップ | OpenSSLについて その4 »
最新の画像もっと見る

コメントを投稿

OpenSSL」カテゴリの最新記事