• 追加された行はこの色です。
  • 削除された行はこの色です。
* OpenSSLのCAコマンドを使ったCA構築 [#n2e59462]

** CA構築の準備 [#f9ac15cb]
 mkdir /tmp/pki
 cd /tmp/pki/
 mkdir /var/pki
 cd /var/pki/
 cp /etc/pki/tls/misc/CA .
 cp /etc/pki/tls/openssl.cnf .
- CA(CA作成スクリプト)やopenssl.cnfの設置場所はOSによって異なるので、予め探しておく。
- 今回は作業を/tmp/pki以下で行う。
- なお、CAスクリプトを使わずにopensslコマンドだけでもCA構築はできるが、opensslのコマンド体系、設定はとても複雑なため、理解が大変だと思う。
- また、CAスクリプトやCAスクリプト内で呼び出されるopensslコマンドの設定ファイル(openssl.cnf)は独自の設定を記述する必要性が高い。
- したがって、OS標準のCAスクリプトとopenssl.cnfをコピーして、別の場所ですべての作業を行った方が良いと思う。
- 今回は作業を/var/pki以下で行い、認証局の設置場所(CATOP)を/var/pki/myCAとする。

** CATOPの設定 [#g10e00f0]
** CA・openssl.cnfの設定 [#g10e00f0]

*** openssl.cnf [#r7b7f770]
 vi openssl.cnf

 [ CA_default ] 
 
 dir = /tmp/pki/myCA
- 今回は作業を/tmp/pkiで行い、CAを/tmp/pki/myCAに作成する。
- OS標準では/etc/pkiがルートで、CAは/etc/pki/CAに作成される。
 dir = /var/pki/myCA # CATOPのファイルパス

 default_days     = 3650     # 証明書の有効期限 不意な期限切れを防ぐため、10年など長めにしておくのが無難
 default_md       = sha256   # 鍵の暗号化方式 SHA1はすでに不適切とされているので、SHA256にする
 default_bits     = 2048     # 同上
 default_crl_days = 3650     # 証明書失効リストの有効期限 定期的にこの期限内にCRLを更新しないと、
                             # 発行した全証明書が無効になる
                             # なので、長めにしておく。ただし、CRLを使わないなら気にしなくてよい。

 countryName_default         = JP                     # 住所などが定型であればここで指定しておく
 stateOrProvinceName_default = Tokyo
 localityName_default        = 1-2-3, Ginza, Chuou-ku
 emailAddress_default        = foo@example.co.jp

*** CA [#of0c2ca2]
 vi CA

 CADAYS="-days 3650                                 # CA証明書(認証局の証明書)の有効期限
 if [ -z "$DAYS" ] ; then DAYS="-days 3650" ; fi    # 認証局が発行するサーバ(クライアント)証明書の有効期限
 if [ -z "$CATOP" ] ; then CATOP=/var/pki/myCA ; fi # CATOP
** CA証明書・秘密鍵の作成 [#if175212]
*** CA作成スクリプトの実行 [#u595de39]
 SSLEAY_CONFIG="-config ./openssl.cnf" CATOP=./myCA ./CA -newca
- CA証明書の有効期限を変更にするにはCAコマンドを編集してCADAYS変数の値を修正する。
 SSLEAY_CONFIG="-config ./openssl.cnf" CATOP=/var/pki/myCA ./CA -newca

- CA certificate filename (or enter to create) Enterキーを押して新規作成する
- Enter PEM pass phrase: CA秘密鍵のパスフレーズ
- Verifying - Enter PEM pass phrase: 同上、再入力する
- 以降、住所などのDN情報を入力する
- A challenge password []: なしでよい
- Enter pass phrase for ./myCA/private/./cakey.pem: パスフレーズを再入力する

*** CA作成スクリプトによって作成されたファイル [#i1891ddc]
- CA証明書  /tmp/pki/myCA/cacert.pem
- CA秘密鍵 /tmp/pki/myCA/private/cakey.pem
- CA証明書 /var/pki/myCA/cacert.pem
- CA秘密鍵 /var/pki/myCA/private/cakey.pem

 myCA/index.txt.attr
 myCA/private/cakey.pem
 myCA/newcerts/XXX.pem
 myCA/certs
 myCA/careq.pem
 myCA/crl
 myCA/cacert.pem
 myCA/index.txt
 myCA/index.txt.old
 myCA/serial

** CA証明書の内容確認 [#pd1397b9]
 openssl x509 -in ./myCA/cacert.pem -text

** CA秘密鍵の内容確認 [#jcd4d0f4]
 openssl rsa -in ./myCA/private/cakey.pem -text

** CA証明書をPEM形式からDER形式(IE等ブラウザ用)に変換 [#j50ae98e]
 openssl x509 -in cacert.pem -outform der -out cacert.der
 openssl x509 -in ./myCA/cacert.pem -outform der -out ./myCA/cacert.der

** サーバ証明書の署名要求を作成 [#zc9abcc4]
 DAYS="-days 3650" ./CA -newreq
- 以下のファイルが作成される。
-- newkey.pem サーバ秘密鍵
-- newreq.pem サーバ証明書の署名要求

** サーバ署名要求(CSR)をCA証明書で署名してサーバ証明書を作成 [#j8c52c96]
 SSLEAY_CONFIG="-config ./openssl.cnf" ./CA -sign
- 上のコマンドを実行すると証明書の詳細が表示されて、署名するか?と問われるのでYESを選ぶ。
- すると、以下のファイルが作成される。
-- newcert.pem サーバ証明書
-- myCA/newcerts/F1234XXXXXXF1.pem サーバ証明書(newcert.pemと同じもの)
- さらに、この内容をコミットするか?と問われるのでYESを選ぶ。
- すると、以下のファイルが更新される。
-- myCA/index.txt データベースファイル
-- myCA/serial シリアルファイル

** 参考 [#n02396f8]
*** CAコマンド [#rbec2e7a]
- http://fc-lab.com/network/server/pki/openssl.html
- http://tenj.jp/modules/smartsection/item.php?itemid=139
*** opensslコマンド [#f82d0a54]
- http://ash.jp/sec/openssl.htm


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS