オレオレCA構築手順
イントラネット向け、SSLプライベート認証局構築手順(備忘録)
なお、今回構築した環境は「CentOS5.4」となります。
SSLプライベート認証局のすすめ
イントラネット上でWebサービスを展開していると、
・「SSLで暗号化通信がしたい」
・「お金を払ってまでSSL証明書を買いたくない」
というジレンマから自己証明書(オレオレ証明書)を利用するケースが往々としてあります。
確かに、この方法を利用すれば「SSLによる暗号化通信」という要件は満たされますが、
同様のシステムが乱立した際、「証明書のアラート」がサーバ毎に表示されてしまい
「つながんないんだけど、、、」という苦情が殺到というのはよく聞く話です。
そこで登場するのが「プライベート認証局(オレオレCA)」。
単純に構築・運用するだけでは何も変わりませんが、SSL(第三者認証)の性質上
プライベート認証局の証明書「ひとつ」をクライアントにインストールすることで、
有料の証明局と同様「信頼された証明書」として扱うことが可能になります。
※最終的な「信頼性」は、認証局サーバのセキュリティレベルと運用方針に
左右されますのでご注意ください。
openssl.cnfの設定
openssl.cnfは、opensslコマンドのデフォルトの動作を設定します。
デフォルトパッケージでは、/etc/pki/tlsの下にあります。
CAの設定は、ファイルの「[ ca ]」「[ CA_default ]」の箇所となります。
基本的にはデフォルトのままでも問題ありませんが、
個人的には[ CA_default ]の下記値を変更します
設定名 | 設定値 | 備考 |
---|---|---|
dir | /etc/CA | CAが利用するディレクトリ(絶対パスに変更) |
default_days | 3650 | デフォルトの証明書有効期間 |
CA証明書の作成
CAの証明書と秘密鍵を生成します。
# mkdir -p /etc/CA/private # mkdir -p /etc/CA/newcerts # touch /etc/CA/index.txt # touch /etc/CA/serial # echo 00 > /etc/CA/serial # cd /etc/CA/ # openssl req -new -x509 -newkey rsa:2048 -out cacert.pem -keyout private/cakey.pem Generating a 2048 bit RSA private key ........+++ ......................................................+++ writing new private key to 'private/cakey.pem' Enter PEM pass phrase: Verifying - Enter PEM pass phrase:
-
-
-
- -
-
-
-
-
-
- -
-
-
「Enter PEM pass phrase:」に秘密鍵のパスフレーズを入力し、
証明書の情報を記載します。
ディレクティブ | 内容 | 記入例 |
---|---|---|
Country Name | 国名 | JP |
State or Province Name | 都道府県 | Tokyo |
Locality Name | 市区町村 | Kunitachi |
Organization Name | 所属名 | Pyrites |
Organizational Unit Name | 部署名 | Lab |
Common Name | コモンネーム | Pyrites Private CA |
Email Address | テクニカルコンタクト | ※メールアドレスを記載 |
カレントディレクトリ(/etc/CA)に以下のファイルが作成されます。
cacert.pem | CAの証明書 |
private/cakey.pem | CAの秘密鍵 |
なお、作成した証明書は以下のコマンドで内容の確認ができます。
#openssl x509 -in cacert.pem -text
とりあえずテスト
さて、CAの構築が完了しましたので早速テストを兼ねて
ApacheのSSL証明書を作成してみたいと思います。
まずは、以下のコマンドでSSLの鍵ペアを作成します。
# mkdir -p /etc/httpd/cert # openssl req -new -keyout /etc/httpd/cert/localhost.key \ > -out /etc/httpd/cert/localhost.pem※実行すると、鍵生成に必要な情報の入力が求められます。
生成されるファイル
localhost.key | 秘密鍵 |
localhost.pem | 公開鍵 |
続いて、プライベートCAで認証します。
# openssl ca -out /etc/httpd/cert/localhost.crt \ > -infiles /etc/httpd/cert/localhost.pem
Apacheに作成した証明書を設定します。
/etc/httpd/conf.d/ssl.confの下記設定を修正します。
SSLCertificateFile /etc/httpd/cert/localhost.crt SSLCertificateKeyFile /etc/httpd/cert/localhost.keyなお、この状態では起動毎に鍵のパスフレーズ入力を求められるので、
パスフレーズの解除を行います。
# mv /etc/httpd/cert/localhost.key /etc/httpd/cert/localhost.key.org # openssl rsa -in /etc/httpd/cert/localhost.key.org \ > -out /etc/httpd/cert/localhost.key
Apacheを再起動し、証明書を確認します。
# service httpd restart