・CentOS8でプライベート認証局を作って、LAN内のWEBサーバにHTTPSアクセスができるようにしたい。
・ネットで検索すると、新旧のいろいろな情報が出てきて、同じように真似してやってみたが上手くいかないので、最新の手順を詳しく知りたい。
こういった疑問に答えます。
本記事の内容
- CentOS8とOpenSSLでプライベート認証局(ルートCA)を作る方法
- CentOS8とOpenSSLで中間認証局を作る方法
- CentOS8のWEBサーバの証明書を作る方法
- CentOS8・ApacheのWEBサーバに証明書を設定してHTTPSアクセスを許可する方法
この記事を書いている私は、某SIerに勤務しながら、
WEB系エンジニア・インフラエンジニアに憧れて、プログラミングおよびインフラ技術の勉強をしています。
私が実機で試したコマンドや画像を載せて書いています。
記事の信頼性担保に繋がると思います。
前提
①~⑦までをまとめて読みたい方は下記のまとめ記事から。
プライベート認証局にするCentOS8サーバのバージョン
cat /etc/redhat-release
uname -r
[root@SV-EARTH ~]# cat /etc/redhat-release CentOS Linux release 8.2.2004 (Core) [root@SV-EARTH ~]# uname -r 4.18.0-193.14.2.el8_2.x86_64
CentOS8にOpenSSLをインストール
CentOS8にOpenSSLをインストール
dnf install openssl
今回の私の環境では、既にOpenSSLがインストール済でした。
[root@SV-EARTH ~]# dnf install openssl メタデータの期限切れの最終確認: 0:17:36 時間前の 2020年09月13日 09時27分46秒 に実施しました。 パッケージ openssl-1:1.1.1c-15.el8.x86_64 はすでにインストールされています。 依存関係が解決しました。 行うべきことはありません。 完了しました!
CentOS8で「/etc/pki/tls/misc/CA」を使えるようにする
CentOS7までのOpenSSLでは認証局を簡単に作れるスクリプト/etc/pki/tls/misc/CA
がありましたが、
CentOS8では見つかりません。
ですが、これが無いと不便なので、別のCentOS7サーバからコピーしておきます。
/etc/pki/tls/misc/CA
CentOS7サーバの「/etc/pki/tls/misc/CA」をダウンロード
CentOS8サーバにそのままアップロード
実行権限を付与(パーミッション)
CentOS8でプライベート認証局(ルートCA)を作成
CA用のconfファイルを作成
/etc/pki/tls/openssl.cnf をバックアップ
cp /etc/pki/tls/openssl.cnf /etc/pki/tls/openssl.cnf.original_bk
[root@SV-EARTH tls]# cp /etc/pki/tls/openssl.cnf /etc/pki/tls/openssl.cnf.original_bk [root@SV-EARTH tls]# ls -l 合計 28 lrwxrwxrwx 1 root root 49 8月 12 07:38 cert.pem -> /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem drwxr-xr-x. 2 root root 54 8月 14 21:28 certs -rw-r--r--. 1 root root 412 4月 24 12:00 ct_log_list.cnf drwxr-xr-x. 2 root root 6 4月 24 12:34 misc -rw-r--r--. 1 root root 11225 4月 24 12:00 openssl.cnf -rw-r--r-- 1 root root 11225 9月 12 16:06 openssl.cnf.original_bk drwxr-xr-x. 2 root root 6 4月 24 12:34 private
openssl.cnf をコピーしてopenssl-root-ca.cnfを作成
cp openssl.cnf openssl-root-ca.cnf
[root@SV-EARTH tls]# cp openssl.cnf openssl-root-ca.cnf [root@SV-EARTH tls]# ls -l 合計 40 lrwxrwxrwx 1 root root 49 8月 12 07:38 cert.pem -> /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem drwxr-xr-x. 2 root root 54 8月 14 21:28 certs -rw-r--r--. 1 root root 412 4月 24 12:00 ct_log_list.cnf drwxr-xr-x. 2 root root 16 9月 13 07:04 misc -rw-r--r-- 1 root root 11225 9月 13 07:09 openssl-root-ca.cnf -rw-r--r-- 1 root root 11225 9月 13 07:08 openssl.cnf -rw-r--r-- 1 root root 11225 9月 12 16:06 openssl.cnf.original_bk drwxr-xr-x. 2 root root 6 4月 24 12:34 private
confの内容を編集
vi /etc/pki/tls/openssl-root-ca.cnf
[ v3_ca ] # Extensions for a typical CA # PKIX recommendation. subjectKeyIdentifier=hash authorityKeyIdentifier=keyid:always,issuer basicConstraints = critical,CA:true # Key usage: this is typical for a CA certificate. However since it will # prevent it being used as an test self-signed certificate it is best # left out by default. keyUsage = critical, cRLSign, keyCertSign, digitalSignature # Some might want this also # nsCertType = sslCA, emailCA # Include email address in subject alt name: another PKIX recommendation # subjectAltName=email:copy # Copy issuer details # issuerAltName=issuer:copy # DER hex encoding of an extension: beware experts only! # obj=DER:02:03 # Where 'obj' is a standard or added object # You can even override a supported extension: # basicConstraints= critical, DER:30:03:01:01:FF
[v3_ca]
の以下の部分をルートCA用に設定
basicConstraints = critical,CA:true
keyUsage = critical, cRLSign, keyCertSign, digitalSignature
プライベート認証局(ルートCA)の自己署名証明書を作成
OPENSSL_CONFIG="-config /etc/pki/tls/openssl-root-ca.cnf" /etc/pki/tls/misc/CA -newca
[root@SV-EARTH rootCA]# OPENSSL_CONFIG="-config /etc/pki/tls/openssl-root-ca.cnf" /etc/pki/tls/misc/CA -newca CA certificate filename (or enter to create) ★★★そのまま[Enter]キー★★★ Making CA certificate ... Generating a RSA private key ...................................................................................................................+++++ .....................................................................................................................................+++++ writing new private key to '/etc/pki/CA/private/./cakey.pem' Enter PEM pass phrase:★★★秘密鍵のパスワード★★★ Verifying - Enter PEM pass phrase:★★★秘密鍵のパスワード(再入力)★★★ ----- 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) []:Tokyo Locality Name (eg, city) [Default City]:Shinagawa-ku Organization Name (eg, company) [Default Company Ltd]:EARTH PLANET Inc. Organizational Unit Name (eg, section) []:★★★空のまま[Enter]キー★★★ Common Name (eg, your name or your server's hostname) []:EARTH PLANET Root CA Email Address []:rootca@sv-earth.planet.jp Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:★★★空のまま[Enter]キー★★★ An optional company name []:★★★空のまま[Enter]キー★★★ Using configuration from /etc/pki/tls/openssl.cnf Enter pass phrase for /etc/pki/CA/private/./cakey.pem:★★★秘密鍵のパスワード★★★ Check that the request matches the signature Signature ok Certificate Details: Serial Number: 08:90:dc:22:c5:bf:cc:56:77:7a:d6:64:09:19:0f:bf:34:03:1d:1a Validity Not Before: Sep 12 22:24:30 2020 GMT Not After : Sep 12 22:24:30 2023 GMT Subject: countryName = JP stateOrProvinceName = Tokyo organizationName = EARTH PLANET Inc. commonName = EARTH PLANET Root CA emailAddress = rootca@sv-earth.planet.jp X509v3 extensions: X509v3 Subject Key Identifier: 3B:C6:C5:A4:75:5A:1F:E9:DA:40:AD:E6:EC:40:34:14:53:34:26:E8 X509v3 Authority Key Identifier: keyid:3B:C6:C5:A4:75:5A:1F:E9:DA:40:AD:E6:EC:40:34:14:53:34:26:E8 X509v3 Basic Constraints: critical CA:TRUE Certificate is to be certified until Sep 12 22:24:30 2023 GMT (1095 days) Write out database with 1 new entries Data Base Updated
作成されたファイルの確認
find /etc/pki/CA
[root@SV-EARTH CA]# find /etc/pki/CA /etc/pki/CA /etc/pki/CA/certs /etc/pki/CA/crl /etc/pki/CA/newcerts /etc/pki/CA/newcerts/0890DC22C5BFCC56777AD66409190FBF34031D1A.pem /etc/pki/CA/private /etc/pki/CA/private/cakey.pem /etc/pki/CA/careq.pem /etc/pki/CA/cacert.pem /etc/pki/CA/serial /etc/pki/CA/index.txt.old /etc/pki/CA/index.txt /etc/pki/CA/index.txt.attr
ルートCA証明書の内容の表示
openssl x509 -in /etc/pki/CA/cacert.pem -text
[root@SV-EARTH CA]# openssl x509 -in /etc/pki/CA/cacert.pem -text Certificate: Data: Version: 3 (0x2) Serial Number: 08:90:dc:22:c5:bf:cc:56:77:7a:d6:64:09:19:0f:bf:34:03:1d:1a Signature Algorithm: sha256WithRSAEncryption Issuer: C = JP, ST = Tokyo, O = EARTH PLANET Inc., CN = EARTH PLANET Root CA, emailAddress = rootca@sv-earth.planet.jp Validity Not Before: Sep 12 22:24:30 2020 GMT Not After : Sep 12 22:24:30 2023 GMT Subject: C = JP, ST = Tokyo, O = EARTH PLANET Inc., CN = EARTH PLANET Root CA, emailAddress = rootca@sv-earth.planet.jp Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public-Key: (2048 bit) Modulus: 00:cd:96:94:d2:59:5f:d5:97:b6:d0:40:5b:76:f5: ce:c5:f7:97:63:1c:d8:71:7c:30:16:66:9d:7b:bd: -------------------(中略)-------------- ef:23:33:f0:94:cd:8f:25:7f:12:3a:74:16:71:fa: e7:2f:8e:63:44:89:ae:78:ef:43:52:0a:bb:87:96: a1:25 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Subject Key Identifier: 3B:C6:C5:A4:75:5A:1F:E9:DA:40:AD:E6:EC:40:34:14:53:34:26:E8 X509v3 Authority Key Identifier: keyid:3B:C6:C5:A4:75:5A:1F:E9:DA:40:AD:E6:EC:40:34:14:53:34:26:E8 X509v3 Basic Constraints: critical CA:TRUE Signature Algorithm: sha256WithRSAEncryption 4c:84:6b:29:19:f4:f7:b1:c1:71:5a:b4:3d:d5:74:95:60:e2: bf:58:6b:04:ae:fd:72:95:bc:50:0a:3f:4f:c7:b9:a0:90:e5: -------------------(中略)-------------- ba:bc:be:67:4c:94:c0:fb:a9:e5:2c:6a:5a:f5:e2:14:26:7c: 9d:a9:66:9b:b3:12:eb:14:3a:e2:5e:c2:38:dd:83:75:75:bb: 1c:15:51:d3 -----BEGIN CERTIFICATE----- MIID5zCCAs+gAwIBAgIUCJDcIsW/zFZ3etZkCRkPvzQDHRowDQYJKoZIhvcNAQEL BQAwgYIxCzAJBgNVBAYTAkpQMQ4wDAYDVQQIDAVUb2t5bzEaMBgGA1UECgwRRUFS -------------------(中略)-------------- +Dm123cVj9aqQmSVzEWdFa9BrcELzUwniQPo1zKTcBhnAOf5356wtbi1tGOM88yk 7RTcySNdsUxldC+kVzghb0gtWmSGA5qrSrzvuRrZvpZX8PhnME49BgblhBw4VIoD aFvjury+Z0yUwPup5SxqWvXiFCZ8nalmm7MS6xQ64l7CON2DdXW7HBVR0w== -----END CERTIFICATE-----
少し長くなったので、続きは次の記事に書きます。