プライベートCAでのサーバー証明書の発行 [CentOS]
PKI 等についてはそれなりの知識は持っていたが、実際に実現するためにはそれなりの時間を要したため、備忘録として手順をまとめてみた。
まず、実施する項目は、下記の通りである。
・プライベート CA の構築
・サーバー証明書を発行する対象(=サイト)での秘密鍵の作成
・上記の秘密鍵を使用した CSR(Certificate Signing Request/証明書署名要求) の作成
(秘密鍵に対応する公開鍵の作成とサーバーに関する情報の作成)
・プライベート CA でのサーバー証明書の発行
(プライベート CA の秘密鍵での CSR への署名)
・Web サーバーの SSL の設定
・プライベート CA のルート証明書のクライアントへの配布
次に、今回実施した手順は、下記の通りである。
(CentOS 5.x 上で実施。)
1. プライベート CA の構築
(1) オリジナルの CA 情報の保存
# cd /etc/pki # mv CA CA.org
(2) /etc/pki/tls/openssl.cnf の編集 (編集後、openssl.cnf-CA にコピー)
# cp -p openssl.cnf openssl.cnf.org # vi openssl.cnf (変更箇所は下記の通り) # diff openssl.cnf openssl.cnf.org 109c109 < default_bits = 2048 --- > default_bits = 1024 178,179c178 < basicConstraints=CA:TRUE < nsCertType = sslCA --- > basicConstraints=CA:FALSE # cp -p openssl.cnf openssl.cnf-CA
(3) CA 構築用のスクリプトの実行
# cd /etc/pki/tls/misc # ./CA -newca (秘密鍵のパスフレーズの入力が必要)
2. サーバーの秘密鍵の作成
(1) /etc/pki/tls/openssl.cnf の編集 (編集後、openssl.cnf-server にコピー)
# cp -p openssl.cnf.org openssl.cnf # vi openssl.cnf (変更箇所は下記の通り) # diff openssl.cnf openssl.cnf.org 109c109 < default_bits = 2048 --- > default_bits = 1024 184c184 < nsCertType = server --- > # nsCertType = server # cp -p openssl.cnf openssl.cnf-server
(2) 秘密鍵の作成
# cd /etc/pki # mv server server.sav (server が存在する場合のみ実行) # mkdir server # cd server # openssl genrsa -aes256 -out server.key 2048 (秘密鍵のパスフレーズの入力が必要)
(3) パスフレーズの解除
Apache の起動時にパスフレーズを尋ねられないようにするための対応である。
(上記の秘密鍵の作成時に -aes256 を指定しないことでも同様の結果が得られる。)
# mv server.key server.key.org # openssl rsa -in server.key.org -out server.key
3. サーバーの CSR の作成
# openssl req -new -key server.key -out server.csr
4. プライベート CA でのサーバー証明書の発行
# cd /etc/pki/tls/misc # openssl ca -in /etc/pki/server/server.csr -keyfile /etc/pki/CA/private/\ cakey.pem -cert /etc/pki/CA/cacert.pem -out /etc/pki/server/server.crt (CA の秘密鍵のパスフレーズの入力が必要)
5. Web サーバーの SSL の設定 (Apache の場合)
# cd /etc/httpd/conf.d # vi ssl.conf (変更内容は下記の通り) - SSLCertificateFile: サーバー証明書のパスを設定 SSLCertificateFile /etc/pki/server/server.crt - SSLCertificateKeyFile: サーバーの秘密鍵のパスを設定 SSLCertificateKeyFile /etc/pki/server/server.key # /etc/init.d/httpd restart
6. プライベート CA のルート証明書のクライアントへの配布
(1) CA のルート証明書をクライアントへの配布
cacert.pem を cacert.crt にリネームして、配布する。
または、必要部分のみをコピーペーストし cacert.crt に保存後、配布する。
必要な部分とは、下記の部分である(これ以外の部分はコメントである)。
・[-----BEGIN CERTIFICATE-----] から [-----END CERTIFICATE-----] まで
また、拡張子を crt に変更するのは、Windows の拡張子の関連付けへの対応である。
(*.crt は [ファイルの種類: セキュリティ証明書] として登録されている。)
(2) クライアント(Web ブラウザ)への CA のルート証明書のインストール
・受信した証明書を認証局(CA) の証明書としてインストールする。
・Web ブラウザを再起動する(インストールした証明書を有効にするため)。
コメント 0