openSSLを利用する

ここら辺に関してメモメモメモ

/etc/pki/CA # tree .
.
├── cacert.pem                  ##### 認証局の(CSRをもとに発行された)証明書.ほんとは上位の認証局に署名してもらうやつ?
├── certs                       ### CSR(証明書に認証局の署名をリクエストするファイル?)のディレクトリ
│   ├── cacert.csr              ##### 認証局のCSR
│   ├── miracle.csr
│   └── server.csr
├── index.txt                   ##### 作成した(たぶん)証明書のlistみたいなやつが書かれていそう.よくわからん
├── index.txt.attr
├── index.txt.attr.old
├── index.txt.old
├── newcerts                    ### 発行した証明書とか
│   ├── 00.pem                  ##### シリアル番号だと思うけどこれはなんだ
│   ├── 01.pem                  ##### 同上
│   ├── miracle.pem             ##### クライアント証明書
│   ├── miracle.pfx             ##### クライアント用のPKCS#12ファイル
│   └── server.pem
├── private                     ### 秘密鍵用のディレクトリ
│   ├── cakey.pem               ##### 一番最初に作った認証局の秘密鍵(パスフレーズ付き)
│   ├── clientkey.pem
│   └── serverkey.pem
├── serial                      ##### 次使うシリアルナンバー的な? サーバ証明書とクライアント証明書発行したら2になってたし
└── serial.old
  • 秘密鍵は基本的に本来はそれぞれのホストが持つもの(実験では簡単のため認証局が全部作ってしまっている)で外部に流出してはいけない.流出したら失効とかある(課題を参照)

  • CSRは認証局に署名をリクエストするためのもので各自の秘密鍵から作られる. このファイルの中にはサーバ情報(本来だと会社情報とか)が含まれていて,ガチだとここでいろいろ審査するんだと思う. これは普通に(ここでいう普通とは特に機密性とか担保する必要がないということ)認証局に送っていいやつだと思う.

  • 認証局自身も本来はこの CSRを上位の認証局に送って署名してもらうんだと思う. (実験では簡単のため自己署名になっている.ただし,現実でも最上位の認証局はたぶんこうしてそう)

  • ちなみに署名して証明書発行するのには CSR・認証局の秘密鍵・認証局の証明書を使う

  • クライアント証明書の受け渡しみたいなことにPKCS#12ファイルを使ったのだが,↓のことが気になる - まず基本的にPKCS#12ファイルは情報交換のためのファイルで,中身を確認したり取り出したり(含まれていれば証明書や秘密鍵まで取り出すことができる) - 今回クライアントのブラウザにはこのPKCS#12ファイル本体を読み込ませて使ったけど,たぶん証明書単体でも大丈夫だよね?(後で確認しよう) - 要は,証明書発行の時に認証局側でよきに計らって発行対象の秘密鍵まで作ってしまって手続きを簡単にして,

    秘密鍵を渡すときはこのPKCS#12ファイルの保護(秘密鍵はパスフレーズとかあったりとか)で機密性とかを担保しながら渡そうみたいな印象があるけどどうなんだ?があるけどどうなんだ

認証局構築・証明書発行・失効まで

OpenSSLを利用して認証局を構築したり証明書を発行してそれを組み込んだり, 発行した証明書を失効したりみたいなのをやる.