はじめまして。
最近会社でSSLサーバを立てることになり、こちらのサイトを参考にさせていただきました。
2階層までなら問題なく認証も通るようになったのですが
3階層にチャレンジし止っております。。。
症状としては中間CAとルートCAのチェーンがうまくいってないような感じです。
作成した各証明書をWindows上で、ルートCA・中間CAをインストールし
サーバ証明書を開いてみたところ中間CAの箇所に!マークがつき以下のエラーが表示されていました。
「この証明機関は証明書を発行する権限がないか、エンドエンティティ証明書として使うことができません。」
IEにて接続時には
「このセキュリティ証明書は信頼する会社から発行されていません。
証明書を表示して、この証明機関を信頼するかどうかを決めてください。」
■環境と作成の大まかな手順----------------------------------
Redhat9でApache2(v2.0.40)+modssl
証明書の作成方法はsign.shという付属のシェルを使っています。
手順としては
1ルートCAの準備 ※2階層時と同じ物を使用
# openssl md5 * > rand.dat
# openssl genrsa -rand rand.dat -des3 1024 > ca.key
# openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
# openssl x509 -inform pem -in ca.crt -outform der -out ca.der
2中間CAの準備
# openssl md5 * > rand.dat
# openssl genrsa -rand rand.dat -des3 1024 > ca.key
# openssl req -new -key server.key -out ca.csr
3中間CAの証明書発行
ルートCAにてca.csrを使用し、以下のコマンドで作成
# ./sign.sh /usr/local/CA/ca.csr
# openssl x509 -inform pem -in ca.crt -outform der -out ca1.der
4サーバの準備 ※2階層時と同じ物を使用
# openssl md5 * > rand.dat
# openssl genrsa -rand rand.dat -des3 1024 > server.key
# openssl req -new -key server.key -out server.csr
5サーバ証明書の発行
中間CAにてcsrを元にサーバ証明書を発行してもらう
# ./sign.sh /usr/local/apache2/conf/certs/server.csr
6ブラウザに1のca.derをインストール
※2階層時にインストール済み
7以下のようにhttpd-ssl.confファイルを編集
※編集箇所のみ記載
SSLCertificateFile /usr/local/apache2/conf/certs/server.crt
※2階層時のは別名です
SSLCertificateKeyFile /usr/local/apache2/conf/certs/server.key
※2回階層時と同じ設定
SSLCertificateChainFile /usr/local/CA/ca.der
※中間CAのDERを指定
------------------------------------------------------
ネットを調べても情報が見当たらず、途方にくれております。
ご教授よろしくお願いします。
> 2階層までなら問題なく認証も通るようになったのですが
> 3階層にチャレンジし止っております。。。
これは、おやじも経験がありません。
パスがわからないこと、sing.shはコピーしたりしてるのかがはっきりしませんが、下記では明らかにうまくいかない気がします。
sign.shは内部でopenssl.conf相当を生成しているので、同じシェルで署名するとca.crt等がルートと同じになってしまうと思います。
従って、中間証明書がおかしくなるのでは?(opensslで中間証明書がチャントできるのか?)
> 症状としては中間CAとルートCAのチェーンがうまくいってないような感じです。
> 作成した各証明書をWindows上で、ルートCA・中間CAをインストールし
> サーバ証明書を開いてみたところ中間CAの箇所に!マークがつき以下のエラーが表示されていました。
> 「この証明機関は証明書を発行する権限がないか、エンドエンティティ証明書として使うことができません。」
> IEにて接続時には
> 「このセキュリティ証明書は信頼する会社から発行されていません。
> 証明書を表示して、この証明機関を信頼するかどうかを決めてください。」
>
>
> ■環境と作成の大まかな手順----------------------------------
> Redhat9でApache2(v2.0.40)+modssl
> 証明書の作成方法はsign.shという付属のシェルを使っています。
> 手順としては
> 1ルートCAの準備 ※2階層時と同じ物を使用
> # openssl md5 * > rand.dat
> # openssl genrsa -rand rand.dat -des3 1024 > ca.key
> # openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
> # openssl x509 -inform pem -in ca.crt -outform der -out ca.der
>
> 2中間CAの準備
> # openssl md5 * > rand.dat
> # openssl genrsa -rand rand.dat -des3 1024 > ca.key
> # openssl req -new -key server.key -out ca.csr
ca.key server.keyは誤記ですよね。
>
> 3中間CAの証明書発行
> ルートCAにてca.csrを使用し、以下のコマンドで作成
> # ./sign.sh /usr/local/CA/ca.csr
> # openssl x509 -inform pem -in ca.crt -outform der -out ca1.der
>
>
> 4サーバの準備 ※2階層時と同じ物を使用
> # openssl md5 * > rand.dat
> # openssl genrsa -rand rand.dat -des3 1024 > server.key
> # openssl req -new -key server.key -out server.csr
>
> 5サーバ証明書の発行
> 中間CAにてcsrを元にサーバ証明書を発行してもらう
> # ./sign.sh /usr/local/apache2/conf/certs/server.csr
このsign.shが問題。
>
> 6ブラウザに1のca.derをインストール
> ※2階層時にインストール済み
>
> 7以下のようにhttpd-ssl.confファイルを編集
> ※編集箇所のみ記載
> SSLCertificateFile /usr/local/apache2/conf/certs/server.crt
> ※2階層時のは別名です
>
> SSLCertificateKeyFile /usr/local/apache2/conf/certs/server.key
> ※2回階層時と同じ設定
>
> SSLCertificateChainFile /usr/local/CA/ca.der
> ※中間CAのDERを指定
ca.crtでは?
> ------------------------------------------------------
>
> ネットを調べても情報が見当たらず、途方にくれております。
> ご教授よろしくお願いします。
何も情報がないので、恐らくできないのでは? と思ってsign.shを改造してやってみましたが、中間CAを使っての署名が失敗してしまいます。
サーバ証明書を見てみると中間-ルートでチェーンが切れていました。
おやじ様
わざわざ確認していただき、ありがとうございます。
そうですか・・・
私もあれからいろいろ調べてみて、サーバと同じ作り方では
だめなのかな?と思いはじめていたところです。
誤記については指摘どうりです、申し訳ありません。。
怪しいと思われるconfファイルなどいじくってがんばってみます。
おやじ様
以下のサイトを発見し、作成したところ3階層ができました。
http://www.ibm.com/developerworks/jp/java/library/j-certgen/#root
チェインに関するであろうコマンドに関して理解したわけではありませんが
とりあえず通りました。。
数日これで悩まされていたので、本当にうれしいです
ありがとうございました。
> 以下のサイトを発見し、作成したところ3階層ができました。
> http://www.ibm.com/developerworks/jp/java/library/j-certgen/#root
情報ありがとうございます。
自己認証の中間CAに関する情報がほとんどないこと、結構、おやじの証明書のコンテンツをご覧になっている方がいることから、いただいた情報を参考におやじのところで紹介しているCA.plを使用した方法での中間CAの作成方法をまとめておきました。