スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

オレオレ証明書を信頼のおけるSSL証明書にしてみる Vol.1

なんだか今更かと思われる内容ですが、いわゆるSSLのオレオレ証明書を作成する上で中間証明書についてまで詳しく触れているサイトがネット上で少なかったので、(あるにはあるけど、実運用を考えると今ひとつ面倒な手順だったり…)
今更とはいえ敢えて書いてみることにしました。
(個人的解釈も交えているので多少間違っていたら指摘してください)


まずSSL証明書についてですが、いわずとしれたSSL通信を行うために必要な証明書のことです。
このSSL証明書をサーバ上のApacheやnginxなどに設定することで、
SSLによる暗号化通信が行えるようになります。
サーバに設定するSSL証明書は、単に「サーバ証明書」とも呼ばれます。

さて、このサーバへ設定するSSL証明書とはそもそもどういうものなのでしょうか。
一般的にお金を払わないと発行されないものであるけど、オレオレ証明書という自己証明書を作ることもできる。
なら最初からお金も掛からないし自分で作ればよくないか?なんて、思ったことがある人もいるかも知れません。
それを説明するために、SSL証明書がどういうものなのかを説明していきます。

01. SSL証明書は認可制である
そもそもですが、SSL暗号化通信を行う必要がある場面を考えてもらえればわかるかと思います。
暗号化をする必要がある情報は、殆どの場合漏洩するとまずい情報です。
そしてその情報は、例えば個人情報など、漏洩すると利用者に多大な被害を与える可能性のある情報を扱う場面も多くあります。それ故に、その情報を悪質なサイト運営者に悪用される恐れもあるわけで、ある一定の基準をクリアしたサイトでなければSSL暗号化通信を認めさせないようにしよう、という目的や、SSL証明書が発行されているサイトということで信頼性のあるサイトであることを利用者へ証明するといった目的が本来あります。

このサイトを認可し、SSL証明書を発行してくれる世界的に信頼のおける機関を認証局(CA : Certificate Authority)と呼びます。これらの認証局が審査などを行い、SSL証明書を発行してくれるわけです。

02. 信頼のおける認証局が発行してくれる証明書とオレオレ証明書(自己証明書)との違い
さて、認証局というものがあることはわかりましたが、認証局が発行してくれたSSL証明書と自分で発行したオレオレ証明書との違いは何なのでしょうか。オレオレ証明書でもSSL通信は行えますので、敢えて認証局が発行したSSL証明書を使う必要がないようにも思えます。

この違いというのは、オレオレ証明書を作ったことがある人なら誰もが経験していると思いますが、ブラウザでオレオレ証明書を設定したWebサイトへアクセスした場合、「このサイトは信頼されていません」といった警告メッセージが出力されます。つまり、「このサイトは信頼のおける認証局が発行したSSL証明書を使ってないから危険かも知れないよ」と警告してくれるわけです。ECサイトや求人サイトなど、多くのサイトではそんなメッセージを毎回出されて怪しいサイトの烙印を押されてしまったら、たまったものではありませんね。だからお金を出してでもちゃんと信頼のおける認証局に認可してもらったSSL証明書を設定する必要があることがわかるかと思います。

しかし、ここで少し不思議に思った方もいるかと思います。
ブラウザは何を基準にして、信頼のおける認証局が発行したSSL証明書とオレオレ認証局が発行したオレオレ証明書を区別しているのでしょうか。

実はWindowsやMac、携帯電話などの各OSまたはブラウザには予め信頼のおける認証局の証明書情報が設定されており、アクセスしたサイトが利用しているSSL証明書がOSまたはブラウザで設定されている信頼のおける認証局が発行したSSL証明書かどうかを判定することで、これを実現しています。

なので極端な話、その情報をOSまたはブラウザ側から削除をしてしまうと、信頼のおける認証局かどうかを区別できなくなり、実際は信頼のおける認証局が発行した証明書を利用していても「このサイトは信頼されていません」といったメッセージが出力されてしまいます。そしてこれは逆もまた然りで、オレオレ証明書であっても、OSまたはブラウザ側に「信頼のおける証明書」として証明書情報を予めインストールさえしておけば、ブラウザ側で警告メッセージが出力されることはなくなるのです。

03. ブラウザやiPhone等でオレオレ証明書を信頼のおける証明書として設定するためには
そして、ここからが本題になります。
オレオレ証明書のように信頼のおける認証局が発行していない証明書は、
時としてアプリのテストに不都合を生じさせる可能性があります。
例えばiPhoneアプリの場合、信頼されていないSSL証明書が設定されたWebサイトへのSSL通信を行うことが通常できません。
一応プログラム側である値を書き換えると出来るようになるのですが、それを実際にリリースするときまで有効にすることは出来ないし、そもそも信頼のおけるWebサイトへのSSL通信のテストを行ったことにはならないため、非常に困ります。
「iPhoneでSSL通信のテストを行うには、テストサイトにおいて高いお金を払ってまでSSL証明書を発行してもらう必要があるのだろうか?」と思われるかもしれませんが、その必要はありません。
前述のとおり、オレオレ証明書を「信頼のおける認証局が発行した証明書」として設定してしまえばいいのです。
具体的には、オレオレ証明書を発行した「オレオレ認証局」の証明書をブラウザや携帯電話に設定する必要があります。

04. ルート認証局と中間認証局について
実際にオレオレ認証局の作成方法を説明する前に、認証局の仕組みについてもう少し詳しく説明したいと思います。
認証局は、実は複数ある場合があり、多くの信頼のおける機関の認証局が発行してくれる証明書は複数の認証局から署名されたSSL証明書になっています。

これはどういうことなのかというと、会社の組織に例えるとわかりやすいかと思います。
会社の一番上には社長がいて、その社長の下には部長、課長、係長などがいます。
社長が認めた部長がいて、部長が認めた課長がいて、課長が認めた係長がいて、その下に一般社員がいるようなイメージです。SSL証明書はこの一般社員に当たるもので、その他の社長、部長、課長、係長は全て認証局に当たります。

つまりどういうことなのかと言いますと、認証局自体も認可制になっているということなのです。
親玉の社長だけに認められたとしても、賄賂や美人局など何か姑息な手段で取り入った可能性もあります (笑)
そのため、部長や課長、係長といった複数人にも認められなければ信頼のおける出世コースの花道に乗れる一般社員とはなれないわけです。

上記の例でいうと、社長にあたる認証局を「ルート認証局 (RCA : Root Certificate Authority)」と呼び、部長・課長・係長を「中間認証局 (ICA : Intermediate Certificate Authority)」と呼びます。

中間認証局は別になくても良いのですが、
中間認証局を設けることでより信頼性を向上させることが可能になります。
また、お金を払って買えるSSL証明書の殆どが複数の中間認証局に署名されているということを考えると、実際のWebサービスをリリースする際には、中間認証局のあるSSL証明書を設定することになります。
そのため、本番環境とテスト環境とのApache or nginxの設定差分を出来るだけ少なくするためにも、中間認証局ありでオレオレ証明書を作ることをオススメします。


というわけで、SSL証明書の前提知識については以上になります。
次は実際の作成方法の説明に行こうかと思ったのですが、
思ったよりも説明が長くなってしまったので、また次回へ続きます。


<最後に用語整理>

証明書
読んで字のごとく何かを証明するもの。
SSL通信で意識する必要があるのは
「認証局を区別するための証明書」
「サーバを区別するための証明書 (=サーバ証明書)」
の2つになる。

SSL証明書
SSL通信を行うWebサイトのサーバに設定する証明書。
サーバ証明書とも言う。

認証局
SSL証明書を発行する実体。
認証局は階層的に存在する。
その大元をルート認証局と呼び、その下に続く認証局を中間認証局と呼ぶ。

自己証明書
信頼のおける機関の認証局ではなく、
自分で作成した自己認証局にて発行した証明書を自己証明書と呼ぶ。
また、誰が最初に言い出したのかは知らないが俗に「オレオレ証明書」とも呼ばれ、
そのオレオレ証明書を発行する認証局を「オレオレ認証局」とも呼ぶ。


Vol.2へ続く
スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

Kou

Author:Kou
モバイル関連の開発ばかりやってる人のブログです。たまにWebもやります。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。