0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

おうちサーバー構築報告:オレオレ認証局とサーバー証明書

Last updated at Posted at 2024-12-29

能書き

おうちサーバー構築報告:予告からのおうちサーバー構築の続きです。

オレオレ認証局の構築は以前もやりましたが、今回はシェルスクリプトにまとめてみました。

認証局の概要は以前の記事を参照して下さい。今回は省略します。

目標

  • easy-rsaを使用してルート認証局を作る所までを実施
  • 一連のコマンド操作をシェルスクリプト化

参考文献

認証局の構築

マシン172.16.1.101:ユーザーroot
cd
cat <<"___" >buildCert.sh
CA_USER=$1

apt update
apt upgrade -y
apt install -y easy-rsa
cd /etc
svn st | grep "^?" | cut -b9- | xargs -I{} find {} -type f -or -type d -or -type l | xargs -t svn add
svn ci -m"install Easy RSA"

useradd -m -s /bin/bash $CA_USER
svn ci -m"add user $CA_USER" /etc
___
chmod 755 buildCert.sh
マシン172.16.1.101:ユーザーroot
./buildCert.sh cert
マシン172.16.1.101:ユーザーroot
su - cert
マシン172.16.1.101:ユーザーcert
cat <<"___" >buildCA.sh
#!/bin/bash
CA_NAME=$1
CA_EXPIRE=$2

cd
mkdir $CA_NAME
cd $CA_NAME
ln -s /usr/share/easy-rsa/* .
./easyrsa init-pki
cat <<___A >vars
set_var EASYRSA_ALGO      "ec"
set_var EASYRSA_DIGEST    "sha512"
set_var EASYRSA_CA_EXPIRE $CA_EXPIRE
set_var EASYRSA_CERT_EXPIRE $CA_EXPIRE
___A
./easyrsa build-ca
___
chmod 755 buildCA.sh
マシン172.16.1.101:ユーザーcert
CA_NAME=demoCA
./buildCA.sh $CA_NAME 36524

このシェルスクリプトbuildCA.shを実行すると、キーペアのパスフレーズを入力するように求められます。必ず強力なパスフレーズを入力し、安全な場所に書き留めます。

更に、CAの共通名(CN; Common Name)を確認するように求められます。CNは認証局のコンテキストでこのマシンを参照するために使用される名前です。任意の文字列を入力できますが、インターネット上で使う予定があれば自分の所有しているドメインにするのが良いでしょう。今回は例としてexample.comにします。

パスフレーズとCNを入力して成功すると、下記の2ファイルが生成されます。

  • CAの公開鍵 /home/cert/demoCA/pki/ca.crt
  • CAの秘密鍵 /home/cert/demoCA/pki/private/ca.key

秘密鍵は絶対に漏らしてはいけない物になります。

公開鍵の内容を確認

マシン172.16.1.101:ユーザーcert
openssl x509 -text -in $HOME/$CA_NAME/pki/ca.crt | grep -E "Issuer:|Subject:"
openssl x509 -dates -noout -in $HOME/$CA_NAME/pki/ca.crt

こんな感じになります。

マシン172.16.1.101:ユーザーcert
$ openssl x509 -text -in $HOME/$CA_NAME/pki/ca.crt | grep -E "Issuer:|Subject:"
        Issuer: CN = example.com
        Subject: CN = example.com
$ openssl x509 -dates -noout -in $HOME/$CA_NAME/pki/ca.crt
notBefore=Dec 29 07:26:07 2024 GMT
notAfter=Dec 29 07:26:07 2124 GMT

オレオレ認証局が認証するサーバー証明書

サーバー証明書を生成して認証

例えばサーバーnetwork.localに対するサーバー証明書をパスフレーズ無しで生成する例は下記のようになります。

マシン172.16.1.101:ユーザーcert
SRV_NAME=network.local

cd $HOME/$CA_NAME
./easyrsa build-server-full $SRV_NAME nopass

生成された各ファイルは、pkiディレクトリ内の各サブディレクトリに格納されます。

  • 秘密鍵: pki/private
  • 証明書要求: pki/reqs
  • 証明書: pki/issued

公開鍵の確認

公開鍵の内容を確認します。

マシン172.16.1.101:ユーザーcert
openssl x509 -text -in pki/issued/$SRV_NAME.crt -text | grep -E "Issuer:|Subject:"
openssl x509 -dates -noout -in pki/issued/$SRV_NAME.crt

下記のようになります。

マシン172.16.1.101:ユーザーcert
$ openssl x509 -text -in pki/issued/$SRV_NAME.crt -text | grep -E "Issuer:|Subject:"
        Issuer: CN = example.com
        Subject: CN = network.local
$ openssl x509 -dates -noout -in pki/issued/$SRV_NAME.crt
notBefore=Dec 29 07:27:35 2024 GMT
notAfter=Dec 29 07:27:35 2124 GMT

仕舞い

ルート認証局、通称オレオレ認証局を作成しました。そしてそのオレオレ認証局が認証するサーバー証明書を作成しました。

利用するマシン全部にオレオレ認証局のインポートが必要なのでちょっと面倒ですが、自分だけの証明書を無料で設定する準備が出来ました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?