プライベート認証局

【ローカルサーバ】

OpenSSLのバージョンを確認

# openssl version
OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)

サーバー証明書の有効期間(default_days)は、1年(365日)。

CA

作成環境を整えてくれるツール。

RockyLinuxにCAがない!

CentOS 7まであった!
CentOS 7から引っ張ってきて、CentOS 7の環境を復活させます。

# cd $HOME
# mkdir work
# cd work
# wget http://ftp.riken.jp/Linux/centos/7/os/x86_64/Packages/openssl-1.0.2k-19.el7.x86_64.rpm
# rpm2cpio openssl-1.0.2k-19.el7.x86_64.rpm | cpio -id ./etc/pki/tls/misc/CA
# mv -i etc/pki/tls/misc/CA /etc/pki/tls/misc

環境作成

/etc/pki/CAに一連の作業環境ができます。
設定ファイルは、/etc/pki/tls/openssl.cnfを参照。
安全安心のため、あらかじめバックアップを作成。

# cp /etc/pki/tls/openssl.cnf /etc/pki/tls/openssl.cnf.bak

作業開始

#  /etc/pki/tls/misc/CA -newca

作成した環境を、ちゃらにしたければ、「rm -rf CA」でOK。

初回設定

Common Nameはホスト名にしておく。

入力要求があったら、この項目だけは入力。あとはリターンキー。

  • Country Name (2 letter code) [XX]:JP
  • State or Province Name (full name) []:Tokyo
  • Locality Name (eg, city) [Default City]:
  • Organization Name (eg, company) [Default Company Ltd]:Personal business
  • Organizational Unit Name (eg, section) []:
  • Common Name (eg, your name or your server’s hostname) []:server

ワーキングディレクトリに移動

# cd /etc/pki

秘密鍵

フォルダ「private」に作成済。ファイル名:cakey.pem。
パスフレーズ付き。

自己署名証明書

CSR(Certificate Signing Request) 証明書署名要求の作成

Organization Name(/O)は、環境設定/初回設定で設定したものとは異なる値。
Common Name(/CN)は、FQDN。

# openssl req -new -key ./CA/private/cakey.pem -out ./CA/certs/ca.csr -subj "/C=JP/ST=Tokyo/L=Default City/O=Sole proprietorship/CN=server.local"

CRT(CeRTificate) 証明書作成

# openssl ca -in ./CA/certs/ca.csr -out ./CA/certs/ca.crt -selfsign -extensions v3_ca

Check that the request matches the signature
Signature ok
---
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y

確認

# openssl x509 -text -in ./CA/certs/ca.crt --noout

サーバ証明書

# mkdir ./CA/server

秘密鍵

# cp ./CA/private/cakey.pem ./CA/server/server.key

CSR(Certificate Signing Request) 証明書署名要求の作成

Organization Name(/O)は、環境設定/初回設定で設定したものと同じ。
Common Name(/CN)は、FQDN。

# openssl req -new -key ./CA/server/server.key -out ./CA/server/server.csr -subj "/C=JP/ST=Tokyo/L=Default City/O=Personal business/CN=server.local"

SAN(Subject Alternative Name)

# nano ./CA/server/subjectnames.txt
subjectAltName = DNS:server.local

ホスト名を書く場合は「DNS」で、IPアドレスで書く場合は「IP」で指定します。ワイルドカード(*)も使用可能です。
(例)
subjectAltName = DNS:test.com, DNS:www.test.com,DNS:*.example.com,IP:192.168.1.10

CRT(CeRTificate) 証明書作成

# openssl ca -in  ./CA/server/server.csr -out  ./CA/server/server.crt -days 365 -extfile ./CA/server/subjectnames.txt

Check that the request matches the signature
Signature ok
---
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y

確認

# openssl x509 -text -in ./CA/server/server.crt --noout

「X509v3 Subject Alternative Name」に、指定したsubjectAltNameが含まれるようになります。

X509v3 extensions:
X509v3 Subject Alternative Name:
DNS:minikube.local

鍵の保存

# mkdir -p $HOME/.CA
# cp ./CA/private/cakey.pem $HOME/.CA/ca.key
# cp ./CA/certs/ca.crt $HOME/.CA/
# cp ./CA/server/server.key $HOME/.CA/ 
# cp ./CA/server/server.crt $HOME/.CA/

秘密鍵 パスフーズ解除

# openssl rsa -in $HOME/.CA/ca.key -out $HOME/.CA/ca.key
# openssl rsa -in $HOME/.CA/server.key -out $HOME/.CA/server.key

作業環境 削除

# rm -rf CA

秘密鍵と発行したサーバー証明書をコピー

# cd $HOME
# cp .CA/server.key /etc/pki/tls/private/server.key
# cp .CA/server.crt /etc/pki/tls/certs/

パーミッション、オーナーを変更

# chmod 600 /etc/pki/tls/private/server.key
# chmod 600 /etc/pki/tls/certs/server.crt
タイトルとURLをコピーしました