- 締切済み
サーバ証明書等の正当性の確認について。
サーバ証明書、証明書には、 認証局の署名をSHA-1等のハッシュ関数で、 ハッシュ化されたハッシュ値を、 認証局の秘密鍵で暗号化された認証局の電子署名が付加されていると思いますが、 その部分の信頼性についてですが、 認証局から、 公開鍵を取り寄せて、 ハッシュ値を取り出すと思うのですが、 もともとの平文(署名)を認証局から取り寄せることは可能でしょうか。 認証局の公開鍵で復号できたから、 認証局の秘密鍵で暗号化されているといえるのですが、 もともとの署名が何かがわかりません。 (ちょっと信頼性にかけるような気がします。) 署名を取り寄せることができれば、 署名をSHA-1等を使って、 ハッシュ値を取り出して、 公開鍵で復号したハッシュ値と比較することができます。 公開鍵と平文(署名)を取り寄せることはできないのでしょうか。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- jjon-com
- ベストアンサー率61% (1599/2592)
>復号した後は、CAの証明書の中の公開鍵をとりだせますが。。。 証明書を見てみようとご自分で一度でも試みていさえすれば,復号なんてしなくても公開鍵が表示できている事実を目のあたりにするでしょう。 http://okwave.jp/qa4071926.html の私の過去の回答No.1 「この回答(No.1)への補足」の後半については,No.1でご紹介した私の過去の回答で解答したつもりです。 >いろいろと質問したいと思います。 >よろしくお願いします。 正直に申し上げて,敬遠したいです。なかなか理解が進まず,ずるずると回答が続いていくのは好きではないので。 証明書そのものを表示してもいらっしゃらないようですし,回答への補足に目を通した限りでは,デジタル署名という基本的概念の理解も怪しそうです。となると,回答No.1には目を通したけれど,回答No.1でご紹介したリンク先はお読みいただけていない可能性もありそうです。 >本などでも、詳しく肝心なところまで、 >詳しく知っている人もなかなかいないので、 キーワード「X.509」でWeb検索すれば,デジタル証明書について解説したページがいくつもヒットするでしょう。実際の証明書データと照らし合わせながら解説を読み進めていけば理解は深まると思います。
- jjon-com
- ベストアンサー率61% (1599/2592)
認証局から公開鍵を取り寄せたりなどしません。 認証局(CA)の公開鍵は CA証明書の中に格納されています。 もともとの署名データなど存在しません。 署名とは,例えば "VeriSign Class 3 Public Primary Certification Authority" などといった平文の名称データ「のことではなく」,あるデータに対して秘密鍵による暗号化処理をおこなう「行為自体」を指します。 http://ja.wikipedia.org/wiki/デジタル署名 上記の「あるデータ」とは何か(秘密鍵によって署名がおこなわれたその元データは何か)と問われれば,それは証明書自身です。 http://okwave.jp/qa5127755.html の過去の私の回答 No.1~No.3 よって,公開鍵も平文(署名)も取り寄せる必要はなく,CA証明書がクライアントPCにインポート済だということは,すなわち,CAの公開鍵も CAによって署名された元データも,すでにクライアントPC上にあるということです。
補足
回答ありがとうございます。 本などでも、詳しく肝心なところまで、 詳しく知っている人もなかなかいないので、 いろいろと質問したいと思います。 よろしくお願いします。 証明書には、 デジタル署名がついていると思いますが、 CAの証明書(CAの公開鍵含む)が、 秘密鍵で暗号化されているということは、 復号するには、どこの公開鍵を使うのでしょうか。 復号した後は、CAの証明書の中の公開鍵をとりだせますが。。。 それと、 CAのデジタル署名ですが、 CAの証明書を秘密鍵で暗号化したものでしょうか。 CAの証明書のハッシュ値を秘密鍵で暗号化したものが、 デジタル署名として、 付加されているのでしょうか。 どこかでハッシュ関数は使っていると思うのですが。。。 よろしくお願いします。
補足
>正直に申し上げて,敬遠したいです。なかなか理解が進まず,ずるずると回答が続いていくのは好きではないので。 たしかにおっしゃる通りです。 Fedora10、opensslで自己署名による証明書は作成しました。 ただ、いろいろなことを一気におこなっているので、 ちょっと、わからないところがあります。 CAのデジタル署名についてですが、 秘密鍵での暗号化ということで了解しました。 (指摘通り、勘違いしていました。) # openssl req -new -key public -out test.csr これで、test.csrを作成しました。 自分の公開鍵をドメイン情報などでラッピングしたものだと思います。 # openssl req -x509 -in test.csr -text -key /etc/pki/tls/private/private_ca.pem -out test.crt (自前のCA秘密鍵=private_ca.pem) ここが問題なのですが、test.csrを単純に自前のCA秘密鍵で暗号化しているのでしょうか。そのデジタル署名+test.csr=test.crtと思ってよいのでしょうか。 ハッシュ等は、使っていないような気もしますし、 このコマンドの中身がわかりません。 これで上記内容であれば、”自前のCA秘密鍵”のペアの”自前のCA公開鍵”があれば、中を取り出せるような気がします。 戻した方がちょっとわかりませんが。。。 よろしくお願いします。