自己認証局の運用

自己認証局を作成・運用

自己認証局を構築します

Linux OS には初期状態で認証局構築ツールが入っています。ここではこのツールを使って自己認証局を構築します。

OpenSSL の設定を自己認証局構築用に変更します

# vi /etc/pki/tls/openssl.cnf
[ usr_cert ]
(略)
basicConstraints=CA:FALSE
 ↓
basicConstraints=CA:TRUE
 
[ v3_ca ]
(略)
# nsCertType = sslCA, emailCA
 ↓
nsCertType = sslCA, emailCA

有効期限を10年に変更したい場合

# vi /etc/pki/tls/misc/CA
CADAYS="-days 1095" # 3 years
 ↓
CADAYS="-days 3650" # 10 years

証明書のラベル付けファイル

「/etc/pki/CA/」ディレクトリ下に証明書のラベル付けに使用するシリアルファイルを作成します。

# echo '1000' > /etc/pki/CA/serial

自己認証局の作成

自己認証局を作成します。赤文字の箇所以外は [Enter] でOKです。

# /etc/pki/tls/misc/CA -newca
CA certificate filename (or enter to create)
[Enter]
(略)
Enter PEM pass phrase: 8888
Verifying - Enter PEM pass phrase: 8888
(略)
Country Name (2 letter code) [XX]: JP
State or Province Name (full name) []: Tokyo
Locality Name (eg, city) [Default City]:[Enter]
Organization Name (eg, company) [Default Company Ltd]:[Enter]
Organizational Unit Name (eg, section) []:[Enter]
Common Name (eg, your name or your server's hostname) []: private-ca
Email Address []:[Enter]
 
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: 8888
Check that the request matches the signature
Signature ok
 
(略:入力した認証局の情報が表示されます)
 
Certificate is to be certified until May 31 10:44:53 2026 GMT (3650 days)
 
Write out database with 1 new entries
Data Base Updated

自己認証局の秘密鍵のパスフレーズを削除

# cd /etc/pki/CA/private/
# openssl rsa -in cakey.pem -out cakey.pem
Enter pass phrase for cakey.pem: 8888

自己認証局の秘密鍵のパーミションを変更

# chmod 400 /etc/pki/CA/private/cakey.pem

以上で、自己認証局の構築完了です。
「/etc/pki/CA/cacert.pem」が「自己認証局のルート証明書」になりますので、これを作業するPCのブラウザにインストールします。

サーバー証明書の発行・・・サーバー毎に作成します

サーバー証明書用の秘密鍵を作成します

# openssl ecparam -name prime256v1 -genkey -out server.key

証明書発行要求(CSR)を作成

証明書発行要求(CSR)を作成します。自己認証局構築の時と同じく、赤文字の箇所以外は<空エンター>でOKです。

# openssl req -new -key server.key > server.csr
 
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:[Enter]
Organization Name (eg, company) [Default Company Ltd]:[Enter]
Organizational Unit Name (eg, section) []:[Enter]
Common Name (eg, your name or your server's hostname) []:east-mikas.com
Email Address []:[Enter]
 
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:[Enter]
An optional company name []:[Enter]

OpenSSL の設定をサーバー証明書発行用に変更

自己認証局構築用になっている OpenSSL の設定をサーバー証明書発行用に変更します。(サーバー証明書の有効期限も10年に変更しています)

# vi /etc/pki/tls/openssl.cnf
[ CA_default ]
(略)
default_days = 365
 ↓
default_days = 3650
 
[ usr_cert ]
(略)
basicConstraints=CA:TRUE
 ↓
basicConstraints=CA:FALSE
 
# nsCertType = server
 ↓
nsCertType = server

サーバー証明書を発行

証明書発行要求(CSR)を元に、自己認証局を使ってサーバー証明書を発行します。

# 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
 
(略:入力したCSRの内容が表示されます)
 
Certificate is to be certified until Oct 15 21:46:11 2027 GMT (3650 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

server.csrの削除

# rm -f server.csr

SSL証明書をインストールするWebサーバーでの作業

自己認証局で作成したserver.keyとserver.crtファイルは、運用する対象PCに設置する必要があります。簡単なのは、自己認証局に接続したSSHターミナルと、運用するWebサーバーに接続したSSHターミナル間で、catで内容をコピーペーストするのが簡単です。

証明書ファイルとキーファイルの設置

# cd /etc/pki/tls/private/
# vi server.key
中身は、自己認証局に接続したSSHターミナルでserver.keyの中身を表示させ、コピーペーストします。
# cd /etc/pki/tls/certs/
# vi server.crt
server,key 同様に自己認証局からコピーペーストします。

パーミッションを変更

# chmod 600 /etc/pki/tls/private/server.key
# chmod 600 /etc/pki/tls/certs/server.crt

SELinuxの設定

SELinux を有効にしている場合は、秘密鍵とサーバー証明書にセキュリティコンテキストをつけておきます。(WEBサーバーの起動時にエラーが発生することがあります)

# restorecon -v /etc/pki/tls/private/server.key
# restorecon -v /etc/pki/tls/certs/server.crt

SSLファイルの設定

サーバー証明書を設置するサーバーはApacheが既にインストールされ、サーバー名等の設定も済んでいるとします。

運用するWEBサイト(east-mikas.com)で、自己認証局で発行したサーバー証明書と秘密鍵を設定します。

# vi /etc/httpd/conf.d/ssl.conf
#DocumentRoot "/var/www/html"
#ServerName www.example.com:443
 ↓
DocumentRoot "/var/www/html"
ServerName east-mikas.com:443
・・・ 
SSLCertificateFile /etc/pki/tls/certs/server.crt
SSLCertificateKeyFile /etc/pki/tls/private/server.key

firewalld で HTTP(80/tcp) と HTTPS(443/tcp) を開けておきます。

# firewall-cmd --add-port=80/tcp --permanent
# firewall-cmd --add-port=443/tcp --permanent
# firewall-cmd --reload

Apache httpd を起動します。

# systemctl start httpd

表示するクライアントPCでの確認

hostsファイルの編集

クライアントPCの hosts ファイルに次の一行を追加しておきます。

# vi /etc/hosts
<WEBサーバのIPアドレス> east-mikas.com

この段階ではブラウザから「https://east-mikas.com/」を表示すると、自己認証局のルート証明書がインストールされていないため、下のような信頼エラーが表示されます。

ルート証明書のインストール

今回は WEBブラウザの FireFox に自己認証局のルート証明書をインストールしてみます。他のブラウザについては未確認です。

自己認証局のルート証明書「/etc/pki/CA/cacert.pem」を手元のパソコンにコピーしておきます。

右上のメニューアイコンをクリックし、出てきたメニューから「設定」を選択します。

プライバシーとセキュリティを選択し、出てきた画面の一番下にある証明書を選択します。

証明書マネージャーから、認証局証明書⇒インポートボタンから、「cacert.pem」を指定してインポートします

下図は、自己認証局から発行されたSSL証明書で稼働した場合、ルート証明書をブラウザにインストールすると、ブラウザの鍵マークが緑色になる事が分かります

タイトルとURLをコピーしました