頑張らないように頑張る。

努力と怠惰の狭間

ワイ記法で「オレオレ証明書」についてまとめてみた。

登場人物

  • ストーリーテラー:全体を進行しながら、証明書などの説明をしてくれる。
  • わい      :主人公。何も知らないバカ息子。
  • 親父      :主人公の親。よく分からない事を噛み砕いて教えてくれる。
  • Webサーバ  :主人公の取引先。
  • ハンバーグ師匠 :オレオレ言ってる人(登場しない)


プロローグ

わい    「なあ」
Webサーバ「なに?」
わい    「君と取引をしたいんや」
Webサーバ「ええで」
わい    「けど、あんた信頼ならんな」
Webサーバ「何てこと言うんや、悲しいわ」
わい    「あんたがどこの馬の骨か分からんから、身分証明してくれや」
Webサーバ「ほなサーバ証明書見せたるで」
わい    「・・・この証明書は誰に発行してもらったんや?」


ここで世界は2つに分岐する・・・・・。


▼1つ目の世界

Webサーバ「中間認証局から得たものやで」
わい    「ほなその中間認証局は誰に認証してもらってるんや?」
Webサーバ「ルート認証機関に決まっとるがな」
わい    「せやな、疑って悪かったわ」
Webサーバ「せやで、ほな、取引させてもらいましょか」
わい    「よろしく頼むわ」


▼2つ目の世界

Webサーバ「オレがオレ自身で発行したんやで」
わい    「は?」
Webサーバ「だから、オレが発行して、オレが保持して、オレが提示してるんや」
わい    「ちょっと何言ってるのか分からないです」
Webサーバ「まあ細かい事は言わんと、昔からの仲やないか」
わい    「せやな、正規なところから証明されてなくても、お前はお前やもんな」
Webサーバ「せやで、ほな、取引させてもらいましょか」
わい    「よろしく頼むわ」


そもそも、証明書とは?

インターネット上で用いられる証明書は「電子証明書」と言われ、大きく2つに分けられる。(本稿ではサーバ証明書について主に説明する)

クライアント証明書

クライアント証明書は、ユーザが正規の利用者である事を認証するために用いられる。
クライアント証明書は、サービス提供者に発行してもらいUSBやメールなどで配布される事もあれば、ユーザ自身でサービス提供元に対して発行要求をする事もある。

サーバ証明書

サーバ証明書は、「実在性証明(サーバが正規の提供者である事)」「暗号化(サーバとの通信規約)」の2つの役割のために用いられる。
サーバ証明書は、認証局に発行してもらう必要があり、サービス提供者自身でサーバにインストールする必要がある。


親父「つまり、運転免許証はクライアント証明書やな。警察署に認証認可もらって、免許証を発行してもらう事で、正規の運転者として認められるわけや。」
わい「なるほど」
親父「一方で、飲食店とかの営業許可証はサーバ証明書やな。保健所から認証認可もらって、店舗に貼り出す事で、顧客は安心してサービスの提供を受けられるわけや。」
わい「なるほど」


※NOTE※
以下に記載されているように、他にも証明書の種類はありますが、ここでは説明を割愛します。


そもそも、認証局とは?

わい「なんで、何で警察署は信頼できるんや?」
親父「そりゃ、裏には警察庁がおるからな」
わい「なんで、何で保健所は信頼できるんや?」
親父「それも、裏に厚生労働省がおるからな」
わい「なんで、厚生労働省警察庁は信頼できるんや?」
親父「それが、国のトップやし、そこが崩れたらお終いやろ」
わい「せやな」


警察署や保健所は「中間認証局」に相当し、
警察庁厚生労働省は「ルート認証局」に相当する。


どのサイトが、どの中間認証局から発行を受け、その中間証明書はどのルート証明書から発行を受けているかは、以下の手順で確認できる。


ちなみに、Qiitaの場合は以下となっている。(2022/07/20時点)

  • Starfield Class 2 Certification Authority
    • Starfield Services Root Certification Authority - G2


わい「入れ子になってる事で、トラストチェーンが構築されるわけやな」
親父「そういう事や」
わい「けど、映画とかドラマやと、不法に免許証発行して身分の偽証してる事とかあるやん、あいつら何なん?」
親父「ああいう奴らが”オレオレ証明書”とか言い始めるねん」


オレオレ証明書”とは一体何なのか?

サーバ証明書には、「暗号化」「実在性証明」の2つの役割があると前述した。

暗号化

オレオレ証明書では、「暗号化」については難なく行う事ができる。
「暗号化」とは、SSL(Secure Socket Layer)による暗号化通信を行うという意味がある。
SSLはただのプロトコル(規約)であるため、規約さえ守っていれば暗号化通信は成立する。

実在性証明

しかし、「実在性証明」については担保する事ができない。
「実在性証明」については、第三者機関により担保してもらわなければ成立しない。
オレオレ証明書のように自己署名した証明書は、第三者機関により担保してもらう事ができず、正当な通信相手であるかが判断できない。


親父「映画とかドラマで偽造免許作ってる場合でも、ちゃんと安全運転はできているんだし、安全運転できてるならその免許証は正当であると判断してしまう事はあるやろ」
わい「せやな」
親父「だけど、いくら安全運転だからといって、それが偽造した免許で、警察署の許可を得てないと分かったら、途端に信頼性が破綻するやろ」
わい「せやな」
親父「だから、オレオレ証明書というのはあかんのや」
わい「なるほど」


※NOTE※
運転免許証の偽造は違法です。
「有印公文書偽造罪」「偽造公文書行使罪」「公文書偽造罪」などに該当するため、法は犯さないようにしましょう。


オレオレ証明書”を使っていいタイミングはある?

わい「調べてみたら、サーバ証明書を得るには、年間5万~10万円くらいかかるらしいやん」
親父「せやな」
わい「だけどさ、システム構築する上で、本番運用前に開発環境でSSL通信の疎通確認したいやん」
親父「せやな」
わい「そういう時はどうすればええんや?開発環境なのに証明書買わんとあかんのか?」
親父「そういう時はオレオレ証明書でもええねん」
わい「え?」
親父「私有地なら無免許でも運転してええって聞いた事あるやろ?」
わい「ある」
親父「それと一緒で、開発環境は外部に晒されてない環境だから、別に自己署名で通信したって誰にも迷惑かからんやろ」
わい「なるほど」
親父「逆に、そのまま本番環境に適用はしちゃいけんで」
わい「外部に晒されてるし、『お前はどこの認証を受けてるんや?』って聞かれた時に答えれんもんな」
親父「そういう事や」


※NOTE※
私有地だと無免許運転してもいいというのは語弊です。ここでは例示として用いただけです。
アウトなケースもあるので、道路交通法はきちんと守りましょう。


オレオレ証明書”や”不正な証明書”を検知する方法は?(PKIについて)

わい「オレオレ証明書がダメなのは分かったわ」
親父「良かった」
わい「けど、正当な認証局から証明書を得てても、更新漏れで失効してたり、規約違反で停止されてる事もあるやんか」
親父「運転免許証とか営業許可証にも、有効期限や適用範囲というのがあるからな」
わい「そういう不正な証明書はどう検知すればいいんや?」
親父「それは、『PKI』によって担保されるんや」

PKI(Public Key Infrastructure、公開鍵基盤、公開鍵暗号基盤


細かい説明については、以下を参照の事。


公開鍵基盤上には「CRL(Certificate Revocation List)」という証明者失効リストが存在し、以下に該当するものが列挙されている。

  • 有効期限内であるにも関わらず、以下のような事由により、失効ないし停止した電子証明書のシリアル番号
    • 秘密鍵の漏えい
    • 秘密鍵の紛失
    • 文書偽造
    • 証明書の被発行者の規則違反 など


PKIに準拠していない場合、ブラウザは「この接続ではプライバシーが保護されません」などの警告を表示する。Google Chromeの場合は以下の通り。


サーバ証明書のインストール方法

オレオレ証明書であっても、正当な認証局から得た証明書であっても、サーバにインストールしない事には始まらない。


という事で、以下を参考にインストールを行う。


エピローグ

わい    「気軽に君と取引したいとか言ってゴメンな」
Webサーバ「分かってくれたらええんやで」
わい    「ほな改めて、君はどこからの認証を受けてるん?」
Webサーバ「それは・・・・・」
ブラウザ  「(この接続ではプライバシーが保護されません)」
わい    「▂▅▇█▓▒░('ω')░▒▓█▇▅▂うわああああ」


余談

元々Qiitaに挙げてたんだけど、キチガイにコメントで絡まれて不快な思いをしたので、Qiitaの記事は消してこちらに再掲。

一昔前(今でもあるけど)、teratailという日本版StackOverflowのようなサイトがあって、とても便利だったものの説教ジジイが増えてしまったせいでユーザが離れていったのを思い出した。

Qiitaもユーザの質が低下してきてるし、その内Zennに取って代わられるんだろうな。


※NOTE※
teratailやQiita、Zennなどのサービスには、ガイドラインやポリシーなどが設けられています。
ガイドラインやポリシーに違反しないように配慮しながら、投稿やコメントを楽しみましょう。


参考サイト