中間認証局(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 [証明依頼書] [有効日数]