【ローカルサーバ】
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