【ローカルサーバ】
OpenSSLのバージョンを確認
1 2 | # openssl version OpenSSL 3.2.2 4 Jun 2024 (Library: OpenSSL 3.2.2 4 Jun 2024) |
サーバー証明書の有効期間(default_days)は、1年(365日)。
CA
作成環境を整えてくれるツール。
1 2 | # dnf -y install perl # dnf -y install openssl-perl |
作業開始
1 | # /usr/bin/CA.pl -newca |
作成した環境を、ちゃらにしたければ、「rm -rf /etc/pki/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
ワーキングディレクトリに移動
1 | # cd /etc/pki |
秘密鍵
フォルダ「private」に作成済。ファイル名:cakey.pem。
パスフレーズ付き。
自己署名証明書
CSR(Certificate Signing Request) 証明書署名要求の作成
Organization Name(/O)は、環境設定/初回設定で設定したものとは異なる値。
Common Name(/CN)は、FQDN。
1 | # 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=localserver.local" |
CRT(CeRTificate) 証明書作成
1 2 3 4 5 6 7 | # 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 |
確認
1 | # openssl x509 -text -in ./CA/certs/ca.crt --noout |
サーバ証明書
1 | # mkdir ./CA/server |
秘密鍵
1 | # cp ./CA/private/cakey.pem ./CA/server/server.key |
CSR(Certificate Signing Request) 証明書署名要求の作成
Organization Name(/O)は、環境設定/初回設定で設定したものと同じ。
Common Name(/CN)は、FQDN。
1 | # 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=localserver.local" |
SAN(Subject Alternative Name)
1 2 | # nano ./CA/server/subjectnames.txt subjectAltName = DNS:localserver.local |
ホスト名を書く場合は「DNS」で、IPアドレスで書く場合は「IP」で指定します。ワイルドカード(*)も使用可能です。
(例)
subjectAltName = DNS:test.com, DNS:www.test.com,DNS:*.example.com,IP:192.168.1.10
CRT(CeRTificate) 証明書作成
1 2 3 4 5 6 7 | # 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 |
確認
1 | # openssl x509 -text -in ./CA/server/server.crt --noout |
「X509v3 Subject Alternative Name」に、指定したsubjectAltNameが含まれるようになります。
X509v3 extensions:
X509v3 Subject Alternative Name:
DNS:localserver.local
鍵の保存
1 | # mkdir -p $HOME/.CA |
1 2 3 4 | # 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/ |
秘密鍵 パスフーズ解除
1 2 | # openssl rsa -in $HOME/.CA/ca.key -out $HOME/.CA/ca.key # openssl rsa -in $HOME/.CA/server.key -out $HOME/.CA/server.key |
作業環境 削除
1 | # rm -rf /etc/pki/CA/* |
秘密鍵と発行したサーバー証明書をコピー
1 2 3 | # cd $HOME # cp .CA/server.key /etc/pki/tls/private/server.key # cp .CA/server.crt /etc/pki/tls/certs/ |
パーミッション、オーナーを変更
1 2 | # chmod 600 /etc/pki/tls/private/server.key # chmod 600 /etc/pki/tls/certs/server.crt |
サーバ証明書をクライアントPC転送
〇〇〇はログイン ユーザ名。
1 2 | # cp .CA/server.crt /home/〇〇〇 # chown 777 /home/〇〇〇/server.crt |
WinSCPで、サーバ証明書 server.crt を
クライアントPC\Users\〇〇〇\.ssh に持ってくる。