2008年8月4日月曜日

OpenSSLで秘密鍵とかCSRや証明書の確認


Mac OS X LeopardでSSLを使えるようにした。

はじめに、SSLの用の秘密鍵を生成する
これはコマンドラインで
# openssl genrsa -des3 -out hogehoge.key 1024
Generating RSA private key, 1024 bit long modulus
............++++++
................................................................++++++
unable to write 'random state'
e is 65537 (0x10001)
Enter pass phrase for hogehoge.key:[パスワード入力]←必ず入れたほうがいい
Verifying - Enter pass phrase for hogehoge.key:[パスワード再入力]


この秘密鍵をつかってcsrを生成する
$ openssl req -new -key hogehoge.key -out hogehoge.csr
Enter pass phrase for hogehoge.key:[パスフレーズ入力]
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP←日本だとJP
State or Province Name (full name) [Some-State]:Tokyo←日本だと都道府県
Locality Name (eg, city) []:Sinjyuku-ku←日本だと市町村
Organization Name (eg, company) [Internet Widgits Pty Ltd]:hogehoge←会社名
Organizational Unit Name (eg, section) []:-←ここはハイフンをいれた。(部署があるなら部署名を)
Common Name (eg, YOUR name) []:www.hogehoge ←会社のサイト
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)

で生成されたhogehoge.csrを認証局に提出してその他手続きをする。

このファイルが手続きに必要になる。

秘密鍵とCSRはバックアップしたほうがいかな。

手続きがおわると認証局から証明書が発行される。
認証局によっては中間証明書ってのが必要な場合がある。

結局これらの設定はよくわからなかったので直接apache2の設定ファイルを変更して対応した。


SSLEngine On
SSLCertificateChainFile "/etc/certificates/dvcacert.cer" ←認証局の中間証明書
SSLCertificateFile "/etc/certificates/www.hogehoge.jp.crt" ←証明書
SSLCertificateKeyFile "/etc/certificates/www.hogehoge.jp.key" ←秘密鍵
SSLCipherSuite "ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:!SSLv2:+EXP:+eNULL"



Leopard Serverで証明書は画面から設定ができる。
また、サイト別に証明書をカスタムで設定できる。

実際の設定名称とファイルが違うのでわかりにくかった。
これらの設定したファイルは下記に保存される。
/etc/certificates/


生成した鍵や証明書の内容は下記でちぇっくできる。

秘密鍵の内容を確認
# openssl rsa -text -noout -in [秘密鍵のファイル]

CSRの内容を確認
# openssl req -text -noout -in /[CSRファイル]

証明書の内容を確認
# openssl x509 -text -noout -in /[証明書ファイル]


設定ファイルの指定を間違えたで苦労してしまった。
手動でやるばあいは下記の設定ファイルをかえる。(apache2.xの場合)
/etc/apache2/sites/