回答編集履歴

4 ルートCAから

raccy

raccy score 20349

2017/04/30 23:12  投稿

自己署名証明書の問題は「その証明書が本物なのかがわからない」ということです。正式証明書は信頼されたルートCA証明書がその証明書が信頼することで、その証明書が本物であること(そのドメインの所有者が作成した事や実在する会社等であること)を保証してくれます。しかし、自己署名証明書は**誰でも作ることができるため**本当にそのドメインを所有している人が作ったのか、実在する会社なのかが信頼できません。それが、自己署名証明書の問題点です。
自己署名証明書の問題は「その証明書が本物なのかがわからない」ということです。正式証明書は、信頼されたルートCA証明書がその証明書を(直接的にまたは中間証明書を用いて間接的に)信頼することで、その証明書が本物であること(そのドメインの所有者が作成した事や実在する会社等であること)を保証してくれます。しかし、自己署名証明書は**誰でも作ることができるため**本当にそのドメインを所有している人が作ったのか、実在する会社なのかが信頼できません。それが、自己署名証明書の問題点です。
問題点はわかったと思います。そして、気付いたと思います。ルートCA証明書から信頼という方法**以外の方法**でその証明書が本物であることを保証できれば、**何も問題はありません**。方法はいくつかあります。
1. 拇印を確認する。
 証明書には拇印(指紋、フィンガープリントとも)という固有の番号があります。これは証明書ごとに異なり同じ物は(とてつもなく低い確率でしか)存在しません。また、同じ拇印の証明書を作成することも(現実的ではない多くの時間をかけなければ)できません。そのため、本物の証明書の拇印をメモしておき、アクセスしたときの証明書の拇印が同じであることを確認すれば、本物であると言うことを保証できます。
 拇印にはSHA256とSHA1があります。たとえば、teratail.comの証明書のSHA256の拇印は`50:27:4F:D7:2D:63:2E:AF:7A:CD:36:55:B0:0B:F7:11:45:DE:4F:03:2F:DC:0F:9A:3E:DB:61:3F:7E:F5:F6:BB`という32バイト(256bits)のデータです。上は16進数でわかりやすく表記した場合です。パターンは2の256乗(一無量大数(10の68乗)の約11億倍)あるため、同じ物が存在する確率はほぼ0です。よって、この拇印であれば、ルートCA証明書がどうなっていようが、teratail.comの本物の証明書であると信頼しても問題ありません。
2. ブラウザに登録する。
   拇印は確実ですが、毎回確認するのは大変です。それに、もし、1bitでも異なればそれは偽者ですから、一文字一文字正確に確認する必要があります。そこで、拇印を確認する、証明書を作成したときにコピーしておく、等の方法で本物だとわかった証明書について、ブラウザで「この証明書は信頼できる」と登録してしまう方法があります。登録方法はブラウザによって異なるので割愛しますが、一度登録してしまえば、正式証明書と同様に、自動的に本物か確認して判断してくれます。その後は警告やエラーがでることはありません。(もちろん、偽者であれば警告やエラーが表示されます)
3. 自分で作ったルートCA証明書を使う。
   これまでの方法は証明書一つだけなら問題ありませんが、もし、多くの証明書を管理するとなると、その一つ一つについて拇印の確認と証明書の登録を行うのは大変な手間です。そこで、自分だけのルートCA証明書を作って、そこから保証してくれるようにします。ただ、ルートCA証明書の運用は一歩間違うと**重大なセキュリティ上の欠陥**が発生します。生半可な知識では大変危険ですので、オススメは全くできません。
3 自己署名…二個目

raccy

raccy score 20349

2017/04/30 23:06  投稿

自己署名証明書の問題は「その証明書が本物なのかがわからない」ということです。正式証明書は信頼されたルートCA証明書がその証明書が信頼することで、その証明書が本物であること(そのドメインの所有者が作成した事や実在する会社等であること)を保証してくれます。しかし、自己証明書は**誰でも作ることができるため**本当にそのドメインを所有している人が作ったのか、実在する会社なのかが信頼できません。それが、自己署名証明書の問題点です。
自己署名証明書の問題は「その証明書が本物なのかがわからない」ということです。正式証明書は信頼されたルートCA証明書がその証明書が信頼することで、その証明書が本物であること(そのドメインの所有者が作成した事や実在する会社等であること)を保証してくれます。しかし、自己署名証明書は**誰でも作ることができるため**本当にそのドメインを所有している人が作ったのか、実在する会社なのかが信頼できません。それが、自己署名証明書の問題点です。
問題点はわかったと思います。そして、気付いたと思います。ルートCA証明書から信頼という方法**以外の方法**でその証明書が本物であることを保証できれば、**何も問題はありません**。方法はいくつかあります。
1. 拇印を確認する。
 証明書には拇印(指紋、フィンガープリントとも)という固有の番号があります。これは証明書ごとに異なり同じ物は(とてつもなく低い確率でしか)存在しません。また、同じ拇印の証明書を作成することも(現実的ではない多くの時間をかけなければ)できません。そのため、本物の証明書の拇印をメモしておき、アクセスしたときの証明書の拇印が同じであることを確認すれば、本物であると言うことを保証できます。
 拇印にはSHA256とSHA1があります。たとえば、teratail.comの証明書のSHA256の拇印は`50:27:4F:D7:2D:63:2E:AF:7A:CD:36:55:B0:0B:F7:11:45:DE:4F:03:2F:DC:0F:9A:3E:DB:61:3F:7E:F5:F6:BB`という32バイト(256bits)のデータです。上は16進数でわかりやすく表記した場合です。パターンは2の256乗(一無量大数(10の68乗)の約11億倍)あるため、同じ物が存在する確率はほぼ0です。よって、この拇印であれば、ルートCA証明書がどうなっていようが、teratail.comの本物の証明書であると信頼しても問題ありません。
2. ブラウザに登録する。
   拇印は確実ですが、毎回確認するのは大変です。それに、もし、1bitでも異なればそれは偽者ですから、一文字一文字正確に確認する必要があります。そこで、拇印を確認する、証明書を作成したときにコピーしておく、等の方法で本物だとわかった証明書について、ブラウザで「この証明書は信頼できる」と登録してしまう方法があります。登録方法はブラウザによって異なるので割愛しますが、一度登録してしまえば、正式証明書と同様に、自動的に本物か確認して判断してくれます。その後は警告やエラーがでることはありません。(もちろん、偽者であれば警告やエラーが表示されます)
3. 自分で作ったルートCA証明書を使う。
   これまでの方法は証明書一つだけなら問題ありませんが、もし、多くの証明書を管理するとなると、その一つ一つについて拇印の確認と証明書の登録を行うのは大変な手間です。そこで、自分だけのルートCA証明書を作って、そこから保証してくれるようにします。ただ、ルートCA証明書の運用は一歩間違うと**重大なセキュリティ上の欠陥**が発生します。生半可な知識では大変危険ですので、オススメは全くできません。
2 作った時に

raccy

raccy score 20349

2017/04/30 23:06  投稿

自己署名証明書の問題は「その証明書が本物なのかがわからない」ということです。正式証明書は信頼されたルートCA証明書がその証明書が信頼することで、その証明書が本物であること(そのドメインの所有者が作成した事や実在する会社等であること)を保証してくれます。しかし、自己証明書は**誰でも作ることができるため**本当にそのドメインを所有している人が作ったのか、実在する会社なのかが信頼できません。それが、自己署名証明書の問題点です。
問題点はわかったと思います。そして、気付いたと思います。ルートCA証明書から信頼という方法**以外の方法**でその証明書が本物であることを保証できれば、**何も問題はありません**。方法はいくつかあります。
1. 拇印を確認する。
 証明書には拇印(指紋、フィンガープリントとも)という固有の番号があります。これは証明書ごとに異なり同じ物は(とてつもなく低い確率でしか)存在しません。また、同じ拇印の証明書を作成することも(現実的ではない多くの時間をかけなければ)できません。そのため、本物の証明書の拇印をメモしておき、アクセスしたときの証明書の拇印が同じであることを確認すれば、本物であると言うことを保証できます。
 拇印にはSHA256とSHA1があります。たとえば、teratail.comの証明書のSHA256の拇印は`50:27:4F:D7:2D:63:2E:AF:7A:CD:36:55:B0:0B:F7:11:45:DE:4F:03:2F:DC:0F:9A:3E:DB:61:3F:7E:F5:F6:BB`という32バイト(256bits)のデータです。上は16進数でわかりやすく表記した場合です。パターンは2の256乗(一無量大数(10の68乗)の約11億倍)あるため、同じ物が存在する確率はほぼ0です。よって、この拇印であれば、ルートCA証明書がどうなっていようが、teratail.comの本物の証明書であると信頼しても問題ありません。
2. ブラウザに登録する。
3. 自分で作ったルートCA証明書を使う。
   これまでの方法は証明書一つだけなら問題ありませんが、もし、多くの証明書を管理するとなると、その一つ一つについて拇印の確認と証明書の登録を行うのは大変な手間です。そこで、自分だけのルートCA証明書を作って、そこから保証してくれるようにします。ただ、ルートCA証明書の運用は一歩間違うと**重大なセキュリティ上の欠陥**が発生します。生半可な知識では大変危険ですので、オススメは全くできません。
1 自己署名…

raccy

raccy score 20349

2017/04/30 23:04  投稿

自己証明書の問題は「その証明書が本物なのかがわからない」ということです。正式証明書は信頼されたルートCA証明書がその証明書が信頼することで、その証明書が本物であること(そのドメインの所有者が作成した事や実在する会社等であること)を保証してくれます。しかし、自己証明書は**誰でも作ることができるため**本当にそのドメインを所有している人が作ったのか、実在する会社なのかが信頼できません。それが、自己証明書の問題点です。
自己署名証明書の問題は「その証明書が本物なのかがわからない」ということです。正式証明書は信頼されたルートCA証明書がその証明書が信頼することで、その証明書が本物であること(そのドメインの所有者が作成した事や実在する会社等であること)を保証してくれます。しかし、自己証明書は**誰でも作ることができるため**本当にそのドメインを所有している人が作ったのか、実在する会社なのかが信頼できません。それが、自己署名証明書の問題点です。
問題点はわかったと思います。そして、気付いたと思います。ルートCA証明書から信頼という方法**以外の方法**でその証明書が本物であることを保証できれば、**何も問題はありません**。方法はいくつかあります。
1. 拇印を確認する。
 証明書には拇印(指紋、フィンガープリントとも)という固有の番号があります。これは証明書ごとに異なり同じ物は(とてつもなく低い確率でしか)存在しません。また、同じ拇印の証明書を作成することも(現実的ではない多くの時間をかけなければ)できません。そのため、本物の証明書の拇印をメモしておき、アクセスしたときの証明書の拇印が同じであることを確認すれば、本物であると言うことを保証できます。
 拇印にはSHA256とSHA1があります。たとえば、teratail.comの証明書のSHA256の拇印は`50:27:4F:D7:2D:63:2E:AF:7A:CD:36:55:B0:0B:F7:11:45:DE:4F:03:2F:DC:0F:9A:3E:DB:61:3F:7E:F5:F6:BB`という32バイト(256bits)のデータです。上は16進数でわかりやすく表記した場合です。パターンは2の256乗(一無量大数(10の68乗)の約11億倍)あるため、同じ物が存在する確率はほぼ0です。よって、この拇印であれば、ルートCA証明書がどうなっていようが、teratail.comの本物の証明書であると信頼しても問題ありません。
2. ブラウザに登録する。
   拇印は確実ですが、毎回確認するのは大変です。それに、もし、1bitでも異なればそれは偽者ですから、一文字一文字正確に確認する必要があります。そこで、拇印を確認して、本物だとわかった証明書について、ブラウザで「この証明書は信頼できる」と登録してしまう方法があります。登録方法はブラウザによって異なるので割愛しますが、一度登録してしまえば、正式証明書と同様に、自動的に本物か確認して判断してくれます。その後は警告やエラーがでることはありません。(もちろん、偽者であれば警告やエラーが表示されます)
3. 自分で作ったルートCA証明書を使う。
   これまでの方法は証明書一つだけなら問題ありませんが、もし、多くの証明書を管理するとなると、その一つ一つについて拇印の確認と証明書の登録を行うのは大変な手間です。そこで、自分だけのルートCA証明書を作って、そこから保証してくれるようにします。ただ、ルートCA証明書の運用は一歩間違うと**重大なセキュリティ上の欠陥**が発生します。生半可な知識では大変危険ですので、オススメは全くできません。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る