環境構築

ここでは、次の証明書を生成・管理するための基本環境を構築します。

※少し設定を変更すれば、他の証明書も生成可能です。

Open SSL のインストール

次のコマンドを入力して Open SSL をインストールします。

apt install openssl

環境設定

証明書に関する各種ファイルやディレクトリを作成します。 どこに置いても良いですが、ここでは、 /var/lib/ssl に置くものとします。

  1. 事前準備(証明書を置くディレクトリの作成)
    mkdir /var/lib/ssl
    cd    /var/lib/ssl
  2. 環境設定
    # 0. 基本ディレクトリ指定
    TARGET_DIR=ca
    #
    # 1. 必要なディレクトリ作成
    mkdir -p ${TARGET_DIR}/{certs,crl,newcerts,private}
    #
    # 2. 権限を設定
    chmod 700 ${TARGET_DIR}/private
    #
    # 3. 証明書のインデックス管理用ファイルを作成
    touch ${TARGET_DIR}/index.txt
    #
    # 4. 証明書のシリアル番号管理ファイルを作成
    echo 01 > ${TARGET_DIR}/serial
    #
    # 5. 失効リスト番号管理ファイルを作成
    echo 00 > ${TARGET_DIR}/crlnumber

openssl.cnf の用意

/etc/ssl/openssl.cnf ファイルを /var/lib/ssl/ 配下にコピーし、 次の点を修正します。

  1. 出力先ディレクトリ変更
    [ CA_default ]
    
    # <変更>  出力先ディレクトリを変更
    #* dir          = ./demoCA              # Where everything is kept
    dir             = ca
  2. 署名時のポリシー変更 (必要に応じて)
    # For the CA policy
    [ policy_match ]
    countryName             = match
    stateOrProvinceName     = optional  # <変更> match -> optional
    organizationName        = optional
    organizationalUnitName  = optional  # <変更> match -> optional
    commonName              = supplied
    emailAddress            = optional
    #
    # [備考]
    # match    : 当該項目がCAと同じであること
    # supplied : 当該項目が設定されていること
    # optional : 当該項目の設定有無、一致不一致を問わない
  3. 署名用拡張設定 ★<>の部分は適宜修正すること。
    # ルート認証局 CA証明書用
    [ cert_rootca ]
    subjectKeyIdentifier    = hash
    authorityKeyIdentifier  = keyid:always,issuer
    crlDistributionPoints   = URI:<CRLファイルがあるURL>
    basicConstraints        = critical,CA:TRUE
    keyUsage                = critical,digitalSignature,cRLSign,keyCertSign
     
    # 中間(末端)認証局 CA証明書用
    [ cert_ca ]
    subjectKeyIdentifier    = hash
    authorityKeyIdentifier  = keyid:always,issuer
    subjectAltName          = DNS.1:<ドメイン名>
    extendedKeyUsage        = serverAuth,clientAuth,emailProtection,codeSigning
    crlDistributionPoints   = URI:<CRLファイルがあるURL>
    authorityInfoAccess     = caIssuers;URI:<CA証明書があるURL>
    basicConstraints        = critical,CA:TRUE,pathlen: 0
    keyUsage                = critical,digitalSignature,cRLSign,keyCertSig
    
    
    # サーバー証明書用
    [ cert_server ]
    subjectKeyIdentifier    = hash
    authorityKeyIdentifier  = keyid,issuer
    subjectAltName          = DNS.1:<ドメイン名>
    extendedKeyUsage        = serverAuth, clientAuth
    basicConstraints        = CA:FALSE
    keyUsage                = digitalSignature,keyEncipherment
    
    
    # クライアント証明書用
    [ cert_client ]
    subjectKeyIdentifier    = hash
    authorityKeyIdentifier  = keyid,issuer
    subjectAltName          = DNS.1:<ドメイン名>
    extendedKeyUsage        = clientAuth
    basicConstraints        = CA:FALSE
    keyUsage                = digitalSignature,keyEncipherment

署名拡張用設定詳細

※その他、設定ファイルの詳細は、man v509v3_config を参照ください。


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