はじめまして
下記の環境でWEBサーバのクライアント認証を行いたいのですが、クライアント証明書を選択するダイアログが出現しません。
(サーバ認証は成功します。)
Apache_2.0.53-Openssl_0.9.7e-Win32
OpenSSL-0[1].9.7e-Win32
なお、
ssl.confは下記のように編集してます。
SSLVerifyClient require
SSLVerifyDepth 1
読み直したところ、ssl.confのCA証明書の指定のところ
SSLCACertificateFile c:/Apache/certs/cacert.pem
おやじさんはcacert.pemを指定されてますが、
作成したca.derをPEMに変換しないといけませんよね?
この方法で解決しました。
確認お願いします。
> 読み直したところ、ssl.confのCA証明書の指定のところ
> SSLCACertificateFile c:/Apache/certs/cacert.pem
>
> おやじさんはcacert.pemを指定されてますが、
> 作成したca.derをPEMに変換しないといけませんよね?
>
> この方法で解決しました。
> 確認お願いします。
だいぶ前のことで忘れていたので、思わず一からコンテンツどおりやってみてしまいましたが、何も問題ないですね。
そもそも、ca.derはプライベートCA作成の最終段階でcacert.pemをブラウザに取り込むためder形式に変換したものなので、それをまた元に戻して指定するということはどういう意味があるのか疑問です。
何かミスがあったとしか思えないのですが?(証明書のダブり等)
このあたりは、ブラウザ側の問題なのでログがないので問題が出ると何が悪いのかが非常にわかりにくいので大変です。
中でもIEはさらにわかりにくいので、FirefoxとかNS等のGecko系の方がまだいいですね。
> > 読み直したところ、ssl.confのCA証明書の指定のところ
> > SSLCACertificateFile c:/Apache/certs/cacert.pem
> >
> > おやじさんはcacert.pemを指定されてますが、
> > 作成したca.derをPEMに変換しないといけませんよね?
> >
> > この方法で解決しました。
> > 確認お願いします。
>
> だいぶ前のことで忘れていたので、思わず一からコンテンツどおりやってみてしまいましたが、何も問題ないですね。
> そもそも、ca.derはプライベートCA作成の最終段階でcacert.pemをブラウザに取り込むためder形式に変換したものなので、それをまた元に戻して指定するということはどういう意味があるのか疑問です。
> 何かミスがあったとしか思えないのですが?(証明書のダブり等)
> このあたりは、ブラウザ側の問題なのでログがないので問題が出ると何が悪いのかが非常にわかりにくいので大変です。
> 中でもIEはさらにわかりにくいので、FirefoxとかNS等のGecko系の方がまだいいですね。
確認ありがとうございます。お手数おかけしました。
わたしも最初から証明書を作り直したところ、まったく問題ありませんでした。(DER、PEM変換も理解しました。)
きっとプライベートCAの作成中になんらかのミスを犯したのかなと思われます。
ちなみに、中間CA局を作成する方法はご存知でしょうか?
CA.pl のオプションにsignCAというのがあるのですが、これを実行すると、以下のようなエラーがでてしまいNGとなります。
Sign the certificate? [y/n]:y
failed to update database
TXT_DB error number 2
Signed CA certificate is in newcert.pem
> ちなみに、中間CA局を作成する方法はご存知でしょうか? > CA.pl のオプションにsignCAというのがあるのですが、これを実行すると、以下のようなエラーがでてしまいNGとなります。 > > Sign the certificate? [y/n]:y > failed to update database > TXT_DB error number 2 > Signed CA certificate is in newcert.pem 中間CAの作り方はよくわかりませんが、基本的にクライアント用証明書の作成と同じと思うので下記でできませんか? 1. ROOT CAに送るリクエストファイルを作成する。 >CA.pl -newreq 以下、クライアント用証明書の作成を参考に・・。 これで、newreq.pemというリクエストファイルができる。 2. ROOT CAで署名する。 >CA.pl -signCA これで、署名された newcert.pem というファイルが作成される。 3. x509証明書(cacert.pem)を作成する。 >openssl x509 -in newcert.pem -out cacert.pem
> 中間CAの作り方はよくわかりませんが、基本的にクライアント用証明書の作成と同じと思うので下記でできませんか?
>
> 1. ROOT CAに送るリクエストファイルを作成する。
>
> >CA.pl -newreq
>
> 以下、クライアント用証明書の作成を参考に・・。
> これで、newreq.pemというリクエストファイルができる。
>
> 2. ROOT CAで署名する。
>
> >CA.pl -signCA
>
> これで、署名された newcert.pem というファイルが作成される。
>
> 3. x509証明書(cacert.pem)を作成する。
>
> >openssl x509 -in newcert.pem -out cacert.pem
すいません。。チェックが遅くなりまして。。
おやじさんの言うとおりで作成可能でした。
上記で作成された中間CAを中間CA1として、この中間CA1が署名するような中間CA2の作成は可能でしょうか?イメージは下記のようになります。
ルートCA
└中間CA1
└中間CA2
中間CA2のリクエスト(newreq.pem)は今までどおり
CA.pl -newreq
で作成できますが、このあと中間CA1で署名してやるにはどうすればよいでしょうか?
フォルダ構成の変更は必要でしょうか?中間CA1を作成した時点でのdemoCAはルートCA用フォルダなのでバックアップしたり。。
> 上記で作成された中間CAを中間CA1として、この中間CA1が署名するような中間CA2の作成は可能でしょうか?イメージは下記のようになります。
>
> ルートCA
> └中間CA1
> └中間CA2
>
> 中間CA2のリクエスト(newreq.pem)は今までどおり
> CA.pl -newreq
> で作成できますが、このあと中間CA1で署名してやるにはどうすればよいでしょうか?
> フォルダ構成の変更は必要でしょうか?中間CA1を作成した時点でのdemoCAはルートCA用フォルダなのでバックアップしたり。。
これは、おやじはわかりません。問題なのは、中間CA1のprivate.keyをどう抽出するかなので、調査されたらわかりませんか?。
> > 上記で作成された中間CAを中間CA1として、この中間CA1が署名するような中間CA2の作成は可能でしょうか?イメージは下記のようになります。
> >
> > ルートCA
> > └中間CA1
> > └中間CA2
> >
> > 中間CA2のリクエスト(newreq.pem)は今までどおり
> > CA.pl -newreq
> > で作成できますが、このあと中間CA1で署名してやるにはどうすればよいでしょうか?
> > フォルダ構成の変更は必要でしょうか?中間CA1を作成した時点でのdemoCAはルートCA用フォルダなのでバックアップしたり。。
>
> これは、おやじはわかりません。問題なのは、中間CA1のprivate.keyをどう抽出するかなので、調査されたらわかりませんか?。
アドバイスありがとうございます。
中間CA1のprivate.keyに観点を絞ってやってみます。
さらに調査してみて、何かわかりましたら報告します。では。