« JBoss5.xでのHibernate deploy設定について | トップページ | Flashの開発を無料でするときのIDE評価 »

2010年2月25日 (木)

SSL関連の情報[Apache SSL導入からクライアント認証まで]CentOS 5.2版

以前書いた記事

SSL関連の情報[Apache SSL導入からクライアント認証まで]

の焼き直しです、最近のOpenSSLのパッケージでスクリプトの使い勝手が変わってきたので
最近のパッケージでのコマンドをメモ
環境はCentOS 5.2をデフォルトインストールした状態とします。
RHELの5系を本番環境で使っていますが基本変わりません。

知っておくと便利なこと
/etc/pki/tls/misc/CA.pl (opensslのユーティリティスクリプト /etc/pki/tls/misc/CA も基本一緒どっち使っても良い)
① /etc/pki/tls/misc/CA.pl -newca 認証局を作成(./demoCA/cacert.pem という認証局の証明書を生成)
② /etc/pki/tls/misc/CA.pl -newreq  新しい秘密鍵(newkey.pem)と証明書要求(newreq.pem)を生成 ※newkey.pemを作成するように変わりました
③ /etc/pki/tls/misc/CA.pl -sign ②の証明書要求から証明書を発行 newcert.pem


ユーティリティスクリプトの基本的な考え方が変わりました。
実行ディレクトリの2つ上のディレクトリに独自証明局の設定フォルダを作成します。
おそらく以下のようなディレクトリ構造を想定しているものと思われます。


/SSL用ディレクトリ/
/SSL用ディレクトリ/CA/ (独自認証局のディレクトリ)
/SSL用ディレクトリ/pem/  (作成した証明書を保存するディレクトリ)
/SSL用ディレクトリ/pem/pem1/ (証明書や証明要求、秘密キーを保存)
/SSL用ディレクトリ/pem/pem2/ (証明書や証明要求、秘密キーを保存)
/SSL用ディレクトリ/pem/pem3/ (証明書や証明要求、秘密キーを保存)
/SSL用ディレクトリ/pem/pem4/ (証明書や証明要求、秘密キーを保存)



pem ディレクトリやpem1 pem2 は適当な名前を付けてOK
スクリプトはpem1 や pem2 に当たるディレクトリで実行します。
※スクリプトが相対パスでかかれているのでココ重要です。

ものぐさでファイル整理の苦手な私にとってはこのファイル構造はとても良いと思います。
証明書作成した時点で整理ができてるというのは素晴らしい!!


SSLのサーバークライアント認証を行うという設定でシュミレート

mkdir ssl_apache
mkdir ssl_apache/pem
mkdir ssl_apache/pem/server (サーバー用証明書ディレクトリ)
mkdir ssl_apache/pem/client (クライアント証明書ディレクトリ)

cd ssl_apache/pem/server
/etc/pki/tls/misc/CA.pl -newca (独自認証局を ssl_apache/CA に作成)
/etc/pki/tls/misc/CA.pl -newreq (証明要求書を作成)
/etc/pki/tls/misc/CA.pl -sign (独自認証局で証明要求に署名、証明書を作成)

openssl rsa -in newkey.pem -out site.key (パスフレーズを解除)
※ここ前の記事と変わっています newreq.pem → newkey.pem

はいこれで以下のファイルができました。
ssl_apache/pem/server/newkey.pem  (サーバー用秘密キー)
ssl_apache/pem/server/newreq.pem  (サーバー用証明要求)
ssl_apache/pem/server/newcert.pem (サーバー用証明書)
ssl_apache/pem/server/site.key (サーバー用パスフレーズ解除秘密キー) apacheの起動時パスワード入力不要


cd ../client
/etc/pki/tls/misc/CA.pl -newreq (証明要求を作成)
/etc/pki/tls/misc/CA.pl -sign (独自認証局で証明要求に署名、証明書を作成)

openssl pkcs12 -export -in newcert.pem -inkey newkey.pem -certfile ../../CA/cacert.pem -out newcert.p12 (証明書の形式を変更)
※ここ前の記事と変わっています newreq.pem → newkey.pem

はいこれで以下のファイルができました。
ssl_apache/pem/client/newkey.pem  (クライアント用秘密キー)
ssl_apache/pem/client/newreq.pem  (クライアント用証明要求)
ssl_apache/pem/client/newcert.pem (クライアント用証明書)
ssl_apache/pem/client/newcert.p12  (クライアント用証明書PK12形式)ブラウザにこれをインストールする


◆有効期限を延ばす
はい証明書の有効期限が1年で大変不便ですね。
そんなかたはセキュリティー上のリスクを理解の上作業前に以下のファイルを編集しましょう
①/etc/pki/tls/openssl.cnf の default_days
②/etc/pki/tls/misc/CA の DAYS と CADAYS
③/etc/pki/tls/misc/CA.pl の DAYS と CADAYS

②③は使っているスクリプトだけ変更すればOK

------------------------ここから下は前の記事と一緒------------------------------

◇Apacheの設定ファイルを編集
/etc/httpd/conf.d/ssl.conf (/etc/httpd/conf/httpd.confの場合もあるでしょう)

SSLCertificateFile /etc/httpd/conf/ssl.crt/site.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/site.key

の部分を作成したファイルに設定。
当然、適当な(適切な)フォルダを作成して配置しておいてほうがよい
パーミッションも適切にしておいたほうがよい。
SSLCertificateFileに指定するのが証明書
SSLCertificateKeyFileに指定するのが秘密鍵

ここまででSSLの導入はOK以下はクライアント認証に必要な設定

#コメントアウトをはずす、なければ追加する
SSLVerifyClient require
SSLVerifyDepth  1
SSLCACertificatePath /etc/httpd/conf/ssl.crt
SSLCACertificateFile /etc/httpd/conf/ssl.crt/ca.crt

意味
SSLVerifyClient クライアント認証を行うか
SSLVerifyDepth 登録された認証局から認証できる距離、階層の深さ
SSLCACertificatePath 認証局の証明書ファイルを格納したフォルダ
SSLCACertificateFile 認証局の証明書(../../CA/cacert.pemに該当)

|

« JBoss5.xでのHibernate deploy設定について | トップページ | Flashの開発を無料でするときのIDE評価 »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/42837/33527836

この記事へのトラックバック一覧です: SSL関連の情報[Apache SSL導入からクライアント認証まで]CentOS 5.2版:

« JBoss5.xでのHibernate deploy設定について | トップページ | Flashの開発を無料でするときのIDE評価 »