2009年8月19日水曜日

opensslを使って秘密鍵と証明書の作成

どうも、俺@仕事中。今日3度目の投稿です。

linuxのopensslを使って秘密鍵とサーバ証明書を作成する場面に出くわしたのでメモります。

まず適当なディレクトリ作成
# mkdir /etc/ssl
# cd /etc/ssl


サーバの秘密鍵を作成
# openssl genrsa -out server.key 1024

署名要求書の作成
# openssl req -new -key server.key -out server.csr
----------
Country Name (2 letter code) [GB]:JP  // 国名
State or Province Name (full name) [Berkshire]:Osaka  // 県名
Locality Name (eg, city) [Newbury]:Osaka  // 市
Organization Name (eg, company) [My Company Ltd]:XX.company  // 会社名、所属組織名
Organizational Unit Name (eg, section) []:develop  // 会社の所属先
Common Name (eg, your name or your server's hostname) []:koexuka.blogspot.com  // サーバのホスト名 この値は超重要
Email Address []:info@koexuka.blogspot.com  // メアド
A challenge password []:  // パスワードいらなければそのままEnter
An optional company name []:  // これもEnter

通常はココで生成されたserver.csrをベリサインとかに送ってサイト証明書を発行してもらうのですが、今回はその処理も自サーバで行います。

では、自サーバが認証局となったつもりで認証局の秘密鍵を作成します。
# openssl genrsa -out ca.key 1024

認証局の証明書を作成します。
# openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
----------
Country Name (2 letter code) [GB]:JP
State or Province Name (full name) [Berkshire]:Osaka
Locality Name (eg, city) [Newbury]:Osaka
Organization Name (eg, company) [My Company Ltd]:XX.company
Organizational Unit Name (eg, section) []:develop
Common Name (eg, your name or your server's hostname) []:www.koexuka.blogspot.com
  // ココが上で要求証明書を作成したときのホスト名と違う必要があります
Email Address []:info@koexuka.blogsport.com

これで認証局側の鍵(ca.key)と証明書(ca.crt)ができました。

認証局となったつもりは終わって、通常のサーバに戻ります。
シリアルを作成します。
# echo 01 > serial.txt

認証局証明書付き自サーバ証明書の作成
# openssl x509 -CA ca.crt -CAkey ca.key -CAserial serial.txt -req -days 3650 -in server.scr -out server.crt
これで自サーバ証明書(server.crt)ができました。


めでたし、めでたし!

0 件のコメント: