OpenSSLで認証局(CA、いわゆるオレオレ証明書w)を作る

オレオレ証明書の作り方!

久々に、OpenSSLで役に立つ作業方法について説明していきまーすw

 

今回は通信を行う際、必要となる認証局や、これを利用してできることなど
いろいろ説明していこうと思いますが、認証局とは何かから始めていきますw

 

認証局とは何か?

 認証局は、以前一度話した、「身元が分からない相手と通信する際、信頼出来ないことがある。そこで、信頼の出来る第三者機関が証明書を使ってその信頼性を証明してくれる。」
つまり、認証局は相手が安全であることを証明する証明書を発行し、安全な通信を行えるようにする機関のこと。

 

これだけだと、わからない方もいるかもしれないのでw
実際にあるものを例にすると、自動車を運転する際に必要な運転免許証には、
本人の写真、名前や生年月日などの個人情報、有効期限、その人が運転できる車
の種類などが記載され、公安委員会の印が押されている。つまり、これを
みれば、公安委員会が「この人は車の運転をする資格がある」ことを認めている
ということになる

 

簡単に図にすると、こんな感じw

f:id:T3CN0:20160925195614p:plain

  1.  Aさんは秘密鍵を利用して、認証局にAさんの情報と公開鍵が
    含まれる証明書を受け取る
  2. AさんはBさんに証明書を送る
  3. Bさんは認証局の証明書からAさんから送られる情報を検証する
  4. 以上の処理を行いながら通信を行うことで、第三者のCさんが
    情報のやり取りを盗聴したり、Aさんになりすますことを防ぐ

 

次に、OpenSSLを使って認証局(つまり、他人が信頼出来る証明書)をどのようにして生成するかについて説明します

 

オレオレ証明書

言い方は、色々ある、「自己署名証明書」、「オレオレ証明書」、その他w
わかりやすいように、画像を使って説明します

 (一様、図の下に赤い字でコマンドを示したので、それを参考にしてくださいw)

まず、秘密鍵を生成する(方式は2つあるが、今回ははRSA方式でやる) 

f:id:T3CN0:20160925200440p:plain

openssl genrsa -out (秘密鍵) -passout pass:(パスワード) -des3 2048

上のコマンドから-des3と言うアルゴリズムで2048ビットの秘密鍵を生成

 

次に、その秘密鍵を元に証明書署名要求(CSR)を生成する

f:id:T3CN0:20160925200758p:plain

openssl req -new -key (秘密鍵) -out (証明書署名要求出力先)

上のコマンドでは、秘密鍵を元に証明書署名要求を生成しています
-outと>は同じですが、OSによっては使用できるものとそうでないものがあるので
うまく使い分けてください
また、ここでは国名、都道府県名、市区町村名などの情報を要求されるので
適当に記入しても問題ありません

 

最後に、その秘密鍵と証明書署名要求からオレオレ証明書を生成する

f:id:T3CN0:20160925202353p:plain

 openssl x509 -req -signkey (秘密鍵) -in (証明書署名要求) -out (オレオレ証明書出力先) -days 3650

上のコマンドは図のものと同じで、証明書署名要求と秘密鍵を元にオレオレ証明書が生成される
-inは<、-outは>で表している、ちなみに-days 3650は有効期限を表し、-reqの後であれば書く場所は限られませんw

 

完成w

 

今日はここまででーすw
このままだと証明書は有効なものではないのでw
次回は、有効にする方法について説明していければと思います(多分w) ではw