Tomcatでのroot証明書について

このQ&Aのポイント
  • Tomcatでroot証明書を使用する方法について解説します。
  • Verisignなどの証明書を使わずに、自分でroot認証局を作成して証明書を発行する方法について説明します。
  • Tomcatでのroot証明書の配置方法やダウンロード可能にする手順についてご教授いただけますか?
回答を見る
  • ベストアンサー

Tomcatでのroot証明書について

いつも参考にさせていただいています。 Verisign等の証明書発行期間から証明書を発行して もらわずに、httpsの認証をさせるために、root認証局での証明書発行を実施しようとしています。 Webサーバにはtomcatを使用しています。 CAの構築と、CAが証明した証明書(private CA)、cacert.der、 .keystoreの作成はできるのですが、サーバのどこに 保存すればよいのかが分かりません。 現状、httpsアクセスすると、.keystoreをサーバから ダウンロードするのですが、これをCAの署名のある サーバ証明書と秘密鍵をダウンロードできるようにしたいと考えています。 tomcatでのファイルの配置方法を御教授いただけないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • SSMSE
  • ベストアンサー率66% (12/18)
回答No.2

先ほどの回答に補足を。 .keystoreファイルを置く場所ですが、Tomcatのインストールディレクトリの下にあるserver.xmlというファイルの記述に従う必要があります。 また、.keystore自体のパスワードもこのファイルに記述しなければならないので、デフォルト(changeit)で作成することをおすすめします。

muraalto
質問者

お礼

ご回答ありがとうございます。お礼が遅くなってしまい申し訳ありません。いろいろ試していたのですが、未だゴールには行き着いていません。 ご教示いただいたURLで、tomcatで認証させる流れは分かったのですが、CA側でCAの署名のある証明書を作成することが出来ていません。 サーバー側で作成したcertreq.csrを用いてCAの署名のある証明書を作成すればよいのでしょうか。 ご教示頂ければ幸いです。

muraalto
質問者

補足

自己解決できました。 # keytool -genkey -alias tomcat -keyalg RSA -keystore .keystore # keytool -selfcert -alias tomcat -validity 10000 -keystore .keystore # keytool -exprot -alias tomcat -file rootcert.cer -keystore .keystore # service tomcat5 restart 生成したrootcert.cerをWebブラウザにインポート 上記手順で自己署名証明書を設定できました。

その他の回答 (1)

  • SSMSE
  • ベストアンサー率66% (12/18)
回答No.1

参考URLによると、Tomcatの場合、Apacheのようにどこかに鍵や証明書のファイルを置くのではなく、.keystoreに鍵と証明書を管理させる必要があるようです。

参考URL:
http://www.jajakarta.org/tomcat/tomcat5.0/ja/docs/tomcat-docs/ssl-howto.html

関連するQ&A

  • HTTPS(SSL)の仕組みとセキュリティについて

    SSLの仕組みと,そのセキュリティについての質問です. 現在,HTTPSで利用するSSLの仕組みについて勉強をしています. しかしながら, 自身がSSLの仕組みについて正しく理解できているか分かりません. また,どうしても理解ができない点が何個かあり,質問させて頂く次第になりました. (様々な書籍やwebを拝見したのですが,いづれも腑に落ちませんでした...) そのため,まず大まかに私が理解しているHTTP上のSSLの仕組みを書き,最後に質問を書かせて頂こうかと思います. 長くなりますが宜しくお願い致します. ■主な登場人物 ・認証局  CA秘密鍵  CA証明書(公開鍵?)  CA証明書発行要求  ・証明書  KEYファイル(秘密鍵/公開鍵)  CSRファイル/申請書(issuer側の情報/公開鍵)  CRTファイル/サーバー証明書(CSRを認証局の秘密鍵で捻ったモノ) ■証明書の発行 1-1.証明書を発行したい者がCSRファイルという申請書を作成し,認証局に送ります.    →CSRには登録情報(issuer)やサーバー(証明書を発行したい者)の公開鍵などが含まれます. 1-2.認証局はCSRファイルが適切であれば,署名(subject)し,認証局の秘密鍵でCSRの中の公開鍵のみを暗号化します. 1-3.これがCRTファイルになり,証明書を発行したい者に送り返されます. この時,サーバー(証明書を発行した者)は認証局によって署名されたCRTファイルを持っています. 次にこれを利用したHTTPS通信について書きます. ■HTTPS通信 2-1.クライアントがサーバーに通信要請をします. 2-2.サーバーは証明書(CRT)をクライアントに送ります. 2-3.クライアントは送られてきたCRTが信頼できるか認証局の証明書(公開鍵)を使って検証します.    →CRTに埋め込まれているサーバーの公開鍵は認証局の秘密鍵によって暗号化されているので,これを認証局の公開鍵で複合化します.    →認証局の公開鍵はルート証明書といい,事前にブラウザに組み込まれているものとします. 2-4.クライアントは共通鍵を発行します. 2-5.クライアントはCSRから複合化したサーバーの公開鍵を用い,自身で発行した共通鍵を暗号化してサーバーに送ります 2-6.サーバーは受け取った暗号データを自身の持つ秘密鍵で複合化し,共通鍵を取得します. 2-7.後はこの共通鍵でデータを暗号化し通信します, ■質問 1.オレオレ証明書+認証局の場合でも正常に通信ができるのはなぜか 私の理解だと2-3で,クライアントが認証局の公開鍵を用い,サーバーの証明書からサーバーの公開鍵を複合化し,それを元に共通鍵を暗号化しています. これはクライアントが認証局のルート証明書(公開鍵)を保有しているから複合化できるはずです. オレオレ証明書の場合は,認証局の公開鍵がクライアントにインストールされていません. そのため,サーバーの公開鍵を複合化できず,共通鍵の生成に失敗し,通信できなくなると思います. しかしながら,ブラウザは「署名が不明な接続先です」とのエラーを出すだけで,通信(接続)ができてしまいます. なぜでしょうか. 2.IssuerとSubjectは暗号化されていないのか 私の理解だと1-2の認証局では,サーバーの公開鍵しか暗号化されていません. ということはIssuerとSubjectは暗号化されていないということでしょうか. また,それはなぜでしょうか. 3.IssuerとSubjectは偽装できるか opensshを用いることで認証局を構築することができます. この時に,Subjectの設定をベリサインの認証局と全く同じようにし, 証明書も,ベリサインの認証局を使っているサイトのIssuerと全く同じようにした場合, SubjectとIssuerが全く同じ証明書ができると思います. この場合は,本物の証明書と同様の証明書を複製できてしまうのでしょうか. できないとは思いますが,それはなぜでしょうか. 4.証明書の偽装は可能か ブラウザから証明書の情報を見ることができます.もちろんbyteデータのraw certificateも見ることができます. この情報を丸々コピーし,全く異なるサーバーに証明書として読みこませて通信した場合は, 署名されてしまうのでしょうか. されないとは思いますが,それはなぜでしょうか. (例えば,URL=CN情報が異なっているから確認できるとか..?それならCN情報だけ書き換えてしまえばいい?) 5.証明書の検証をするにはどうしたらよいか 証明書を検証をするには,その証明書を発行した認証局の公開鍵を利用するしかないのでしょうか. 例えば,サーバー証明書(CRT)のフィンガープリントsha1データを事前に保持さえしていれば, サーバーに証明書を示された際にCRTのフィンガープリントを比較すれば,特定のサーバーかどうか検証できるか・・? 6.MITMについて MITM攻撃により,証明書が途中で書きかわることが考えられます. この場合は,書き換わった証明書をどのように特定すればいいのでしょうか. 例えば,認証局のルート証明書がないなどが考えられますが, 仮に,Rapid SSLなどで署名されている証明書でMITM攻撃がされた場合どうなるでしょうか? この場合は,Issuerなどを比較するしかないように考えられます. しかし,Issuerはcsr申請の際にうまいこと,書き換えることができてしまいます. そう考えると,どのような対策ができるでしょうか フィンガープリントなどで比較することになるのでしょうか, フィンガープリントは偽装することができないのでしょうか. 以上となります. 様々な質問を書いてしまい,申し訳ありません 説明不足で乱文だとは思いますが, 分かる範囲でお答え頂けませんでしょうか. 宜しくお願い致します.

  • 自己署名証明書によるSSL通信について教えてください!

    SSL通信により、データを暗号化してWeb上でやりとりするシステムの構築を考えています。 そこで自己署名というのを考えているのですが、署名の流れがいまいち分かりません。 認証局利用の場合、私の理解では、 【サーバ側】 1.サーバ側でRSA秘密鍵を生成 2.RSA秘密鍵を元にCSRを作成 3.CSRファイルを認証局に送信 【認証局】 4.CA秘密鍵により暗号化し、サーバ証明書を作成 5.サーバ側にサーバ証明書を送信 【サーバ側】 6.クライアント側にサーバ証明書を送信 【クライアント側】 7.サーバ側よりサーバ証明書を受信する 8.認証局より公開鍵を取得する 9.認証局の公開鍵でサーバ証明書の暗号化された鍵(認証局の秘密鍵で暗号化されたもの)を復号する 10.復号した鍵により、サーバ証明書の暗号文を復号する となります。(間違いがある場合はご指摘下さい) では、自己署名を行う場合はどうなるのでしょうか? 単純にサーバ証明書を自分で作成すると考えてよろしいのでしょうか? CSRファイルの作成などもやはり行うのでしょうか? クライアント側の流れは変わらないのでしょうか? また、この操作は接続毎に毎回行うことになるのでしょうか? (秘密鍵、サーバ証明書は毎回変わるのでしょうか?) 初歩的な質問とは思いますが、よろしくお願いいたします。

  • 電子証明書について

    CAは電子証明書以外に公開鍵、秘密鍵も発行しているのでしょうか?また電子証明書と鍵の違いはなにでしょうか?

  • 電子証明書について

    電子証明書について質問があります。  電子証明書を使って認証を行う場合、信頼できる第三者であるCAの署名をもとに、通信相手の信頼性を判断します。 [質問] (1)認証の際には電子証明書を相手に送信することになると思います。その場合CAの署名データもネットワークに流れますよね?もしそのデータを読み取られてしまった場合はそのCAの署名を使って電子証明書を作成できると思うのですがどうなのでしょうか?   (2)署名、署名といいますが実際見てみると意味のわからないデータの羅列です。CAの署名というのはどのように作られるのでしょうか? よろしくお願いします。

  • SSLの証明書・秘密鍵について

    こんにちは。tatu456です。 LAN環境で RedHat Linux7.1JにてApache-SSLを導入し、セキュアなサーバを構築しようと思っているのですが、CA証明書・サーバ証明書・サーバ秘密鍵の作成方法、または入手方法がわかりません。 CA証明書については下記のURLを参考に作成してみたのですが、他の2点がよくわからないのです。 ご存じの方教えてください。 参考にしたURL:http://www.ipa.go.jp/security/fy12/contents/crack/soho/soho/chap3/ssl/apachessl.html

  • サーバ証明書等の正当性の確認について。

    サーバ証明書、証明書には、 認証局の署名をSHA-1等のハッシュ関数で、 ハッシュ化されたハッシュ値を、 認証局の秘密鍵で暗号化された認証局の電子署名が付加されていると思いますが、 その部分の信頼性についてですが、 認証局から、 公開鍵を取り寄せて、 ハッシュ値を取り出すと思うのですが、 もともとの平文(署名)を認証局から取り寄せることは可能でしょうか。 認証局の公開鍵で復号できたから、 認証局の秘密鍵で暗号化されているといえるのですが、 もともとの署名が何かがわかりません。 (ちょっと信頼性にかけるような気がします。) 署名を取り寄せることができれば、 署名をSHA-1等を使って、 ハッシュ値を取り出して、 公開鍵で復号したハッシュ値と比較することができます。 公開鍵と平文(署名)を取り寄せることはできないのでしょうか。

  • [apache+tomcat]なぜ!?実行したらトムキャットが落ちる!?

    こんにちわ♪ アパッチとトムキャットを使ってJavaシステムを構築しています。 昨日まで順調に動いていたユーザ認証のプログラムが、本日リカバリーして 実行しますと、サーブレットの処理がうまくいかず、トムキャットは閉じ、 IEには「Internal Server Error」と表示されてしまいます。 アパッチはSTOPにはなっていないようです。 このような現象はどういうときに発生しますか? アパッチとトムキャットの連携設定にミスがあるのでしょうか??

    • ベストアンサー
    • Java
  • サーバー証明書の有効期限の設定方法について

    はじめまして。 現在Windows2003Serverで独自CAを使い、SSL通信を行っております。 しかし、このSSL通信に使用するサーバー証明書の有効期限が1年に設定されてしまいます。 有効期限を設定できるような設定を探したのですが見つかりませんでした。 有効期限の設定方法(5年位にしたい)について知っている方、設定方法について教えてください。 尚、現在のSSL設定方法は以下の通りです。 ・独自CAサーバー:Windows2003Server ・Webサーバー:Windows2003Server 1.WebサーバーのIISにてサーバー証明書(AAA.TXT)を作成 2.独自CAサーバーからWebページにてAAA.TXTを使いサーバー証明書を発行 3.独自CAサーバーの認証機関にて保留中の証明書を発行 4.独自CAサーバーのWebページにて証明書のダウンロード(AAA.CER) 5.WebサーバーのIISにてサーバー証明書(AAA.CER)をインストール

  • 無料S/MIME証明書発行での公開鍵秘密鍵

    無料S/MIME証明書発行での公開鍵秘密鍵 ですが、IEで、無料の証明書を申し込むときに、 RSAの公開鍵と秘密鍵を作成しなくてはならないと思うのですが、 この計算は、自分のPCの中で行われるのでしょうか、 それとも、証明書を発行してくれる会社のサーバーで計算されるのでしょうか?

  • 証明機関構築について

    初心者です。 スタンドアロンルートCAをオフラインで構築後、 エンタープライズ下位CAを構築しようとした際に、 下位証明書をルートCAで発行しましたが、下位CAへインストールしたときに 「失効サーバがオフラインのため確認できません。」というようなメッセージが出力され、 下位CAを稼動させることができません。 どなたかご教授いただければと思います。 宜しくお願いします。