!!プライベート認証局の構築 ここをhttps://blog.apar.jp/linux/8587/ 参照しました。 !プライベート認証局の構築 [pki]# pwd /etc/pki [pki]# mkdir CA [pki]# ls CA ca-trust fwupd fwupd-metadata java nss-legacy nssdb rpm-gpg rsyslog tls [pki]# 1.OpenSSL の設定をプライベート認証局構築用に変更します。 [pki]# vim /etc/pki/tls/openssl.cnf [pki]# diff tls/openssl.cnf.org tls/openssl.cnf 172c172 < basicConstraints=CA:FALSE --- > basicConstraints=CA:TRUE 204c204 < # subjectAltName=email:move --- > subjectAltName=@alt_names 224a225,229 > subjectAltName=@alt_names > > [ alt_names ] > > IP.1=192.168.220.99 250c255 < # nsCertType = sslCA, emailCA --- > nsCertType = sslCA, emailCA [pki]# 2.プライベート認証局構築スクリプトを編集し、有効期限を30年に変更します。(長期間運用しなければ3年のままでもかまいません) [pki]#vim /etc/pki/tls/misc/CA [pki]# diff tls/misc/CA.org tls/misc/CA 64c64 < CADAYS="-days 1095" # 3 years --- > CADAYS="-days 10950" # 30 years [pki]# 3.「/etc/pki/CA/」ディレクトリ下に(もしこのディレクトリが無かったら作成してください)証明書のラベル付けに使用するシリアルファイルを作成します。 [pki]# echo '00' > /etc/pki/CA/serial 4.プライベート認証局を作成します。太字の箇所以外は<空エンター>でOKです。 [pki]# /etc/pki/tls/misc/CA -newca CA certificate filename (or enter to create) 空ENTER (略) Enter PEM pass phrase: 1234 表示されません Verifying - Enter PEM pass phrase: 1234 表示されません (略) For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:JP State or Province Name (full name) []:Niigata Locality Name (eg, city) [Default City]: Organization Name (eg, company) [Default Company Ltd]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []:private-ca Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: Using configuration from /etc/pki/tls/openssl.cnf Enter pass phrase for /etc/pki/CA/private/./cakey.pem: 1234 表示されません Check that the request matches the signature Signature ok Certificate Details: Serial Number: 0 (0x0) Validity Not Before: Jan 19 06:40:35 2021 GMT Not After : Jan 12 06:40:35 2051 GMT Subject: countryName = JP stateOrProvinceName = Niigata organizationName = Default Company Ltd commonName = private-ca X509v3 extensions: X509v3 Subject Key Identifier: 2D:54:21:62:1D:B1:D2:5A:57:66:0C:18:00:2A:DB:37:8A:1E:A3:FD X509v3 Authority Key Identifier: keyid:2D:54:21:62:1D:B1:D2:5A:57:66:0C:18:00:2A:DB:37:8A:1E:A3:FD X509v3 Basic Constraints: CA:TRUE Netscape Cert Type: SSL CA, S/MIME CA Certificate is to be certified until Jan 12 06:40:35 2051 GMT (10950 days) Write out database with 1 new entries Data Base Updated [pki]# 5.プライベート認証局の秘密鍵のパスフレーズを削除します。 [pki]# cd /etc/pki/CA/private/ [private]# openssl rsa -in cakey.pem -out cakey.pem Enter pass phrase for cakey.pem: 1234 ←表示されません writing RSA key [private]# 6.プライベート認証局の秘密鍵のパーミションを変更 [private]# chmod 400 /etc/pki/CA/private/cakey.pem 以上で、プライベート認証局の構築完了です。「/etc/pki/CA/cacert.pem」が「プライベート認証局のルート証明書」になりますので、これをWEBブラウザにインストールします。 続いて、プライベート認証局でサーバー証明書を発行してみましょう。 !サーバー証明書の発行 1.まずはじめにサーバー証明書用の秘密鍵を作成します。 [private]# pwd /etc/pki/CA/private [private]# openssl ecparam -name prime256v1 -genkey -out server.key [private]# ls cakey.pem server.key [private]# 2.証明書発行要求(CSR)を作成します。プライベート認証局構築の時と同じく、太字の箇所以外は<空エンター>でOKです。 [private]# openssl req -new -key server.key > server.csr 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) [XX]:JP State or Province Name (full name) []:Niigata Locality Name (eg, city) [Default City]: Organization Name (eg, company) [Default Company Ltd]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []:192.168.1.1 Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: [private]# 3.プライベート認証局構築用になっている OpenSSL の設定をサーバー証明書発行用に変更します。 vim /etc/pki/tls/openssl.cnf [private]# diff /etc/pki/tls/openssl.cnf.org2 /etc/pki/tls/openssl.cnf 172c172 < basicConstraints=CA:TRUE --- > basicConstraints=CA:FALSE 178c178 < # nsCertType = server --- > nsCertType = server [private]# 4.証明書発行要求(CSR)を元に、プライベート認証局を使ってサーバー証明書を発行します。 [private]# ls cakey.pem server.csr server.key [private]# openssl ca -in server.csr -out server.crt Using configuration from /etc/pki/tls/openssl.cnf Check that the request matches the signature Signature ok Certificate Details: Serial Number: 1 (0x1) Validity Not Before: Jan 19 07:15:21 2021 GMT Not After : Jan 19 07:15:21 2022 GMT Subject: countryName = JP stateOrProvinceName = Niigata organizationName = Default Company Ltd commonName = 192.168.1.1 X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Cert Type: SSL Server Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: 62:31:CE:F9:EC:DE:82:96:C7:7D:69:61:1F:EB:52:79:D6:17:47:15 X509v3 Authority Key Identifier: keyid:2D:54:21:62:1D:B1:D2:5A:57:66:0C:18:00:2A:DB:37:8A:1E:A3:FD Certificate is to be certified until Jan 19 07:15:21 2022 GMT (365 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated [private]# 5.秘密鍵と発行したサーバー証明書を適切な場所に移動 [private]# ls cakey.pem server.crt server.csr server.key [private]# ls /etc/pki/tls/private/ localhost.key [private]# ls /etc/pki/tls/certs/ Makefile ca-bundle.crt ca-bundle.trust.crt localhost.crt make-dummy-cert renew-dummy-cert [private]# [private]# mv -i server.key /etc/pki/tls/private/ [private]# mv -i server.crt /etc/pki/tls/certs/ [private]# ls /etc/pki/tls/private/ localhost.key server.key [private]# ls /etc/pki/tls/certs/ Makefile ca-bundle.crt ca-bundle.trust.crt localhost.crt make-dummy-cert renew-dummy-cert server.crt [private]# 6.パーミッションを変更 [private]# chmod 600 /etc/pki/tls/private/server.key [private]# chmod 600 /etc/pki/tls/certs/server.crt [private]# 7.CSRを削除 [private]# ls cakey.pem server.csr [private]# rm server.csr rm: 通常ファイル `server.csr' を削除しますか? y [private]# !windows10に証明書をインポート *サーバーのプライベート認証局のルート証明書(cacert.pem)を取得 *.pemを.cerに変更 *caceert.cerをダブルクリック https://www.furukawa.co.jp/fitelnet/product/setting/detail/Windows10_CAinstall.pdf !!サーバ名がIPアドレスの場合のSSL証明書作成 https://www.magata.net/memo/index.php?%A5%B5%A1%BC%A5%D0%CC%BE%A4%ACIP%A5%A2%A5%C9%A5%EC%A5%B9%A4%CE%BE%EC%B9%E7%A4%CESSL%BE%DA%CC%C0%BD%F1%BA%EE%C0%AE !概要 IPアドレスでアクセスする場合やマルチドメイン用のSSL証明書の場合は、証明書検証時に Subject Alternative Name (SAN) もチェックされるのでこれを含む証明書を作成する必要がある。 !openssl.conf [ v3_req ] subjectAltName = @alt_names [ alt_names ] # サーバーのIPアドレス IP.1 = 192.168.1.10 IP.2 = 192.168.1.11 # マルチドメイン用の証明書の場合 #DNS.1 = example.com #DNS.2 = www.example.com #DNS.3 = hoge.example.com #DNS.4 = fuga.example.com