TLS化に必要な要素
- 秘密鍵: 各コンポーネント(クライアント、サーバー、認証局)だけが持つ鍵。他に漏らさないよう管理が必要
- 公開鍵: 秘密鍵から作られる。文字通り公開して良いし誰でも使える必要がある
- 証明書: 公開鍵が信頼に足るものである、とCAが保証した証
- CSR: 証明書をください、という申請書。
- CA(認証局) - 証明書を発行する機関
作成時に必要な要素
秘密鍵を作るとき
必要なもの:
- 鍵の種類(RSAなど)
- 鍵の長さ(2048bitなど)
CSRを作るとき
必要なもの:
-
証明書が欲しい本人の秘密鍵
-
本人の情報
- 名前(CN): サーバーならドメイン名、人なら名前
- 組織名(O)
- 国(C)
- など
-
出力: CSR
※ CSRは「公開鍵に署名を行うリクエスト」だが、入力に公開鍵は必要なく、秘密鍵があれば良い。
これは、秘密鍵に含まれている情報からペアとなる公開鍵は作成可能なため。
それぞれ以下のコンポーネントが証明書を持つ
- サーバー証明書が欲しい人 → サーバーの秘密鍵で作る
- クライアント証明書が欲しい人 → クライアントの秘密鍵で作る
- CA → CAの秘密鍵で作る
CA証明書を作るとき
Root CAの場合:
- 自分のCSR + 自分の秘密鍵で署名(自己署名)
- 上位CAがいないので自分で自分を証明する
下位CA(中間CA)の場合:
- 自分のCSR + 上位CAの秘密鍵で署名
- 上位CAに認めてもらう
サーバー/クライアント証明書を作るとき
必要なもの:
- 申請者のCSR
- CAの秘密鍵(署名するため)
- 有効期間
→ CAが「この申請書の内容は正しい」と署名して証明書を発行。mTLS-Adminで発行し、各ホストに配布する。
流れ
① 秘密鍵を作る
↓
② CSR(申請書)を作る ← 秘密鍵 + 自分の情報
↓
③ CAに提出
↓
④ CAが署名して証明書を発行 ← CSR + CAの秘密鍵
↓
⑤ 証明書を受け取る