引き続き OpenSSL 0.9.8a について見てみます。
公式の CA に署名を依頼する場合は、秘密鍵と CSR を作るわけですが、その CA の指示にしたがって作成するべきです。例えば、以下のような方法が一般的です。
つまり、openssl genrsa で秘密鍵を作り、それから openssl req で CSR を作ります。有効期限は、CA で署名する時に指定するはずです。これで認証会社から署名された証明書 *.crt が送られてきます。coLinux ではこれを利用する人はまずいないと思いますが。
さて、前回作成された証明書はこのままですとブラウザで表示するときに警告がでます。そこで、特定少数の人が ssl を利用してアクセスする場合を想定すると、あらかじめ上で作成した CA証明書 の cacert.pem を配布することになります。 Windows 上では、署名された証明書のファイル名 cacert.pem を cacert.crt とすれば、「セキュリティ証明書」として認識されますが、der 形式?に変換して配布するのが良いみたいです。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) に対応しており、
と指定すると、Certificate Basic Constrains のフィールドの値が、
となるらようです。最後の行を変えるには、CA:TRUE, pathlen:0 のように pathlen を付ければいいみたいです。ここで、Is a Certificate Authority となっているのが重要らしいです。
Windows の「証明書」ウィンドウではどう表示されるかというと、「詳細」で「基本制限」フィールドの値が、
と表示されるようです。CA:FALSE なら、
みたいです。前回作った証明書では、CA:FALSE が指定されているのが今回の問題点の理由らしいことが分かりました。 そこで、公式な CA と同じ形式になるように、ためしに CA の証明書を作るときに、CA:ture となっている v3_ca セクションを使うように、-extensions v3_ca オプションを指定したら、ブラウザで参照時にエラーになってしまいました。
ということは、自己署名型の CA を作るときと、通常のサーバ用の証明書を作るときに openssl.cnf は直して使う必要があるようです。
続きは次回にしたいと思います。
公式の 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 は直して使う必要があるようです。
続きは次回にしたいと思います。
※コメント投稿者のブログIDはブログ作成者のみに通知されます