はじめに
Web検索で見つけた証明書の作り方では,みんなやり方がまちまちで分からない!
でしょ?
あのサイトもどのサイトも,やりたいのは自己署名じゃない!!
やりたいこと
自己署名じゃないサーバ証明書を作りたい.ルート認証局と中間認証局の2段構えのフル実装をやってみたい.ただし,ルート認証局だけは自己署名で作る.さすがに本気で信頼できるルート認証局を作るなんてことまではしない.
それで,nginxでTLSを動かす.あとクライアント認証もやりたい.やりたいこといっぱい.
ここではやらないこと
用語の細かな説明とか.
ツールのインストール方法とか.
ここを参考にしようとする人はパソコン初心者じゃないので特に問題無かろう.
環境
実行環境はこんな感じ.特殊なことは特にやってないつもり.
[~]$ cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
[~]$ openssl version
OpenSSL 1.0.2k-fips 26 Jan 2017
これから作りたいもの
大体こんな感じ.
ルート認証局 # 自己署名
├── 中間認証局1 # ルート認証局で署名
| └── サーバ証明証 # 中間認証局1で署名
└── 中間認証局2 # ルート認証局で署名
└── クライアント証明証 # 中間認証局2で署名
ルート認証局も中間認証局もある,信頼できる認証局で証明書を作ってもらったときと同じような構成にしたい.
作業
こんだけそろえようとすると,やることはかなり多い.
- ルート認証局を作る
- 中間認証局を作る
- サーバ証明書を作る
- nginxでTLSを設定する
- Webブラウザにルート証明書をインポートする
- クライアント証明書を作る
信頼できる認証局を使うまっとうなやり方だと,それぞれ別々の人が作業するので良いのだが,これを1人で1台のPCで全部やるとすると,今やってる作業がどの立場の人の作業だとか,どのファイルを使うだとか,だんだんわけが分からなくなってくる.
今回はルート認証局,中間認証局,サーバの管理者用の3つのディレクトリを用意し,それぞれの立場の作業はなるべくそれぞれのディレクトリへ移動して行うことにする.めんどうだけど,今からやる作業がどの立場の人の作業か,意識できるようにしている.
/etc/pki/
├── tls # コンフィグファイルは全部ここ
├── RootCA # ルート認証局
├── Int1CA # 中間認証局
└── FourierSV # サーバ証明書
実行するアカウント
実行は基本的に管理者権限で行う.これは単に/etc/pki/
の権限がそうなっているため.ここではsudo
をいちいち書くのがめんどうなので,su -
でrootアカウントに移行して作業している.
補足
途中に出てくるecho
のリダイレクションは,単にsudo
を頭に付けただけでは実行できない.
$ sudo sh -c 'echo 01 > serial'
とすれば良い.
これからやること
1個の記事で全部書くのは大変なので,それぞれの作業で記事を分けた.
- ルート認証局を作る
- 中間認証局を作る(未投稿)
- サーバ証明書を作る(未投稿)
- nginxでTLSを設定する(未投稿)
- Webブラウザにルート証明書をインポートする(未投稿)
- クライアント認証(未投稿)