OpenSSLのCAコマンドを使ったCA構築
CA構築の準備
mkdir /var/pki
cd /var/pki/
cp /etc/pki/tls/misc/CA .
cp /etc/pki/tls/openssl.cnf .
- CA(CA作成スクリプト)やopenssl.cnfの設置場所はOSによって異なるので、予め探しておく。
- なお、CAスクリプトを使わずにopensslコマンドだけでもCA構築はできるが、opensslのコマンド体系、設定はとても複雑なため、理解が大変だと思う。
- また、CAスクリプトやCAスクリプト内で呼び出されるopensslコマンドの設定ファイル(openssl.cnf)は独自の設定を記述する必要性が高い。
- したがって、OS標準のCAスクリプトとopenssl.cnfをコピーして、別の場所ですべての作業を行った方が良いと思う。
- 今回は作業を/var/pki以下で行い、認証局の設置場所(CATOP)を/var/pki/myCAとする。
CA・openssl.cnfの設定
openssl.cnf
vi openssl.cnf
[ CA_default ]
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
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証明書・秘密鍵の作成
CA作成スクリプトの実行
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作成スクリプトによって作成されたファイル
- 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証明書の内容確認
openssl x509 -in ./myCA/cacert.pem -text
CA秘密鍵の内容確認
openssl rsa -in ./myCA/private/cakey.pem -text
CA証明書をPEM形式からDER形式(IE等ブラウザ用)に変換
openssl x509 -in ./myCA/cacert.pem -outform der -out ./myCA/cacert.der
参考
CAコマンド
opensslコマンド