目次
記事の目的
LinuxサーバのOpenSSLを使用したCA認証局の作成手順である。
この手順を使用したオレオレ認証局でもSSL通信の証明書管理やクライアント証明書も署名できる。
なお、今回の使用した環境はAWS LightsailのDebianを使用。
CA認証局で作成されるファイル
Opensslを使用した証明書や秘密鍵の作成手順はあるが何がどんな役割をしているか混乱している人もいると思う。
- CA証明書(cacert.pem)
- CA証明局の秘密鍵(cakey.pem)
- index.txt(証明の管理レコード格納DB)
- serial(番号管理ファイル)
まずは以下の証明書・秘密鍵・証明局の関係をきちんと理解することをおすすめする。
準備中
CA認証局の準備
opensslのインストールは省略。
CA認証局用のディレクトリ作成。
mkdir -p /etc/ssl/CA
mkdir -p /etc/ssl/CA/certs
mkdir -p /etc/ssl/CA/private
mkdir -p /etc/ssl/CA/crl
mkdir -p /etc/ssl/CA/newcerts
chmod 700 /etc/ssl/CA/private
シリアルを初期化。
echo "01" > /etc/ssl/CA/serial
証明書のDBのを作成
touch /etc/ssl/CA/index.txt
最後にopenssl.confの以下を修正。
作成したCAディレクトリをrootディレクトリに設定する。
dir = /etc/ssl/CA
これで準備CA認証局の準備は完了。
CA証明局の証明書と秘密鍵を作成
CA認証局の秘密鍵を作成する。
この秘密鍵(cakey.pem)は最も重要なファイルであるため管理には注意すること。
cd /etc/ssl/CA
openssl req -new -x509 -newkey rsa:2048 -out cacert.pem -keyout private/cakey.pem -days 1825
※ サンプルのためRSA2048・有効期限を5年(1865日)で設定。適宜変更すること
以下が証明書情報は入力画面であるが、適宜変更すること。
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Tokyo
Locality Name (eg, city) []:Minato-ku
Organization Name (eg, company) [Internet Widgits Pty Ltd]:TodoONada
Organizational Unit Name (eg, section) []:IT
Common Name (e.g. server FQDN or YOUR name) []:*.libproc.com
Email Address []:
証明書の情報は以下で取得できる。
openssl x509 -in /etc/ssl/CA/cacert.pem -text
CA認証局を使用したSSL通信のためのサーバ証明書の作成手順
本手順完了後に以下の手順を実施する。
オレオレCA認証局でSSL通信をする手順。Nginx利用のサーバ証明書・秘密鍵・証明書署名要求の作成方法
CA認証局を使用したクライアント証明書の作成手順
本手順完了後に以下の手順を実施する。
[Nginx]オレオレCA認証局を利用したクライアント証明書通信をする手順。