公開鍵証明書って何?
認証局(CA)が「この人(サーバ)が発行した公開鍵で間違いないよ」と証明するもの
なりすまし、改ざんに効果あり!
クライアントがアクセスしたいサーバAが「僕はサーバAだよ!サービスAを提供しているよ!」と声高々に言っていても、本当にサーバAかどうかはわからない。
なぜなら、攻撃者であるサーバBが「僕はサーバAだよ!(本当はサーバB)」とサーバAになりすましている可能性があるから。
そこで、第三者である認証局側で「あなたがサーバAであることを認めます」と証明したものが公開鍵証明書(サーバ証明書、クライアント証明書、ルート証明書の3つがある)
サーバ証明書作成までの流れ
よくクライアント、サーバ、認証局が三角の形で並んでいる図を見かけると思う。
それを想像しながら書く。
(1)サーバは公開鍵と秘密鍵の鍵ペアを作成する。
(2)サーバは公開鍵を認証局に登録する。(申請書のフォーマットはX.509が良く出てきますね)
その際、公開鍵+コモンネームや、組織情報なども一緒に送る。
(3)認証局側でも公開鍵と秘密鍵のペアを作成しておき、サーバから証明書の発行が来たら、認証局の秘密鍵でサーバの公開鍵とコモンネーム等の諸々の情報からのディジタル署名を作成し、公開鍵にくっつけてサーバ証明書の出来上がり。
(4)クライアントはサーバからサーバ証明書を取得する。
(5)サーバ証明書を取得したら認証局の公開鍵でサーバ証明書の認証局のディジタル署名を復号し、検証する。
(6)公開鍵を使って通信開始。
(この後、共通鍵を交換するのも良し!)
※クライアントは通信を行う際、サーバ証明書に格納されているコモンネームを検証します。
このコモンネームにはサーバの管理しているURL(正確にはFQDN)が登録されており、アクセス先のURLが本当に正しいのかコモンネームと比較を行う。
Itecの模試にも出ました。実際にも出てるのかな?
PKIって何?
よく解説サイト等を見ていますが、私なりの解釈としては「証明書作成、紛失・漏洩時の処理、鍵の管理等を構成しているもの」と考えています。要は公開鍵を効率よく運営するための会社みたいな感じです。
基本的にはサーバ証明書作成までの流れで解説していることが主なことだと思います。
そのほかには前述しましたが紛失・漏洩時の処理を行っています。
PKIはビルとかに入ってるわけではないのですぐに作れます。それなら自分だけとか友達同士で!ってレベルで。
その中でも政府が確立しているPKIをGPKIと言います。
CRLって何?
上記、紛失・漏洩時のことです。
証明書の流出は起こり得ます。それがUSBに格納していてUSBを落とした、通信盗聴されててバレちゃったとか様々です。
その時に「そのサーバ証明書利用できないようにして!」と認証局に依頼します。
認証局では証明書が破棄した証明書を一覧化しています。一覧化したリストのことを**証明書破棄リスト(CRL)**と言います。
正確には有効期限内で破棄した証明書のシリアル番号を一覧化したものです。
そのため、有効期限が切れ次第CRLからは除外されます。
CRLは随時更新されるため今持っているサーバ証明書が有効なのか調べることも可能です。
・OCSPプロトコルによる問い合わせ
クライアントかサーバが証明書の有効性を調べるために利用するプロトコルです。
OCSPを使って「この証明書まだ使える??」って問い合わせをします。
ちなみに問い合わせ先は認証局の中の「VA」という機関で、CRLの集中管理を行っている所です。
・CRLのダウンロード
有効かどうか問い合わせるのではなくリスト自体をダウンロードするやり方です。
HTTPとかFTPとかでダウンロードするみたいですね。
#認証局の公開鍵証明書に証明
サーバの公開鍵を証明しているのが認証局です。
ですが、そのサーバ証明書を認証する認証局の公開鍵は誰が証明するのでしょうか。
攻撃者が認証局になりすましていることだって大いにあり得ますからね。
認証局の公開鍵を認証するのは上位の認証局です。ルートCAと言いますよね。
認証局の公開鍵を上位の認証局が認証して、さらにその公開鍵を上位の認証局が認証して・・・と、きりがないため、ルートCAは自分自身で認証を行います。
認証局は階層構造になっており、頂点をルートCA、中間に存在する認証局を中間認証局と言います。
プライベート認証局とパブリック認証局
パブリック認証局は公的な第三者機関のことで、プライベート認証局は社内とか組織内とか自身で作成した認証局のことです。
パブリック認証局は厳密な審査を突破したCAです。そのため利用者側から見ても信頼できますよね。しかし証明書を登録する際にお金がかかります。
プライベートCAは自社内で完結するもので自分を自分自身で証明しています。そのため自社内で信頼できる認証機関としておけば自社内から自社内のサーバとかだったらパブリック認証局と大差ありません。
しかし利用者側から見ると、ただ「俺が俺だぁ」といっているにすぎませんのでアクセスする際は警告画面等が出てしまいます。パブリック認証局に認証されたところは警告が出ません。
利用者側から見るとプライベート認証局はパブリック認証局に利便性、信頼性の面で劣りるのではないでしょうか。ただ自社内だけでの利用という点であればプライベート認証局を利用するのは有りです。