中間認証局(CA)もルート認証局と同様に 認証局に必要な秘密鍵と証明書が必要となります。 違いは、証明書の作成方法とルート認証局に署名してもらう点です。
次の手順は、認証局(CA)構築を参照下さい。
ルート認証局との違いを★で示しております。
# ------------------------------------------------------- # 設定 # ------------------------------------------------------- CNF_FILE=openssl_ca.cnf # 設定ファイル名 TARGET_DIR=CA # 作成先ディレクトリ IS_ROOTCA=n # ★中間認証局のためnを指定する DAYS=3650 # 有効期間 # SUBJの設定 # 次の値を指定可能 # /C=[国] # /ST=[都道府県] # /L=[市町村] # /O=[組織] # /OU=[部門] # /CN=[コモンネーム(サーバ証明書の場合 FQDN を指定する)] # (*1) サーバー証明書の場合は、FQDN を指定する。 SUBJ="/C=JP/O=Ehobby/OU=Server CA/CN=Ehobby"
【ルート認証局(CA) の証明書と秘密鍵生成】 と同じスクリプトを実行します。 (IS_ROOTCA のフラグが異なるため生成されるファイルが変わります。)
署名依頼書「${TARGET_DIR}/cacert_req.pem」ファイルが生成されているので 本ファイルをルート認証局に渡して署名してもらう。
#!/bin/bash CERT_NAME=$1 CNF_FILE=/export/ssl/openssl_ca.cnf DAYS=180 if [ ! "${2}" = "" ]; then DAYS=${2} fi CERT_SIGNED=`echo ${CERT_NAME} | sed "s/^\(.*\)_req.pem$/\1/"` CERT_SIGNED_PEM=${CERT_SIGNED}.pem CERT_SIGNED_DER=${CERT_SIGNED}.der if [ ! -f "${CERT_SIGNED_PEM}" ]; then echo "Usage: ${0} xxxxx_req.pem [day]" echo "Ex) ${0} cacert_req.pem 180" exit 1 fi openssl ca -md sha256 -config ${CNF_FILE} -policy policy_match -extensions v3_ca -days ${DAYS} -out ${CERT_SIGNED_PEM} -infiles ${CERT_NAME} openssl x509 -inform pem -in ${CERT_SIGNED_PEM} -outform der -out ${CERT_SIGNED_DER} echo "------------------------------------------" echo "Input file : ${CERT_NAME}" echo "Output file [pem] : ${CERT_SIGNED_PEM}" echo "Output file [der] : ${CERT_SIGNED_DER}"
./sign.sh [証明依頼書] [有効日数]