6.2. ローカル証明書の作成
スマートカード認証のテストには、有効な証明書チェーンが必要です。管理者は、ローカルの自己署名認証局 (CA) を生成し、それを使用してユーザー証明書要求に署名することで、開発環境用の機能的な認証情報セットを作成できます。
この手順に従って、次のタスクを実行します。
- OpenSSL 認証局の生成
- 証明書署名リクエストの作成
以下の手順は、テスト目的のみを想定しています。ローカルの自己署名証明局により生成される証明書は、AD、IdM、または RHCS 認証局を使用する場合と同じように安全ではありません。ホストがドメインに含まれていない場合でも、企業の認定機関が生成した証明書を使用する必要があります。
手順
証明書を生成するディレクトリーを作成します。以下に例を示します。
# mkdir /tmp/ca# cd /tmp/ca証明書を設定します (このテキストは、
caディレクトリーのコマンドラインにコピーします)。# cat > ca.cnf <<EOF[ ca ] default_ca = CA_default [ CA_default ] dir = . database = \$dir/index.txt new_certs_dir = \$dir/newcerts certificate = \$dir/rootCA.crt serial = \$dir/serial private_key = \$dir/rootCA.key RANDFILE = \$dir/rand default_days = 365 default_crl_days = 30 default_md = sha256 policy = policy_any email_in_dn = no name_opt = ca_default cert_opt = ca_default copy_extensions = copy [ usr_cert ] authorityKeyIdentifier = keyid, issuer [ v3_ca ] subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer:always basicConstraints = CA:true keyUsage = critical, digitalSignature, cRLSign, keyCertSign [ policy_any ] organizationName = supplied organizationalUnitName = supplied commonName = supplied emailAddress = optional [ req ] distinguished_name = req_distinguished_name prompt = no [ req_distinguished_name ] O = Example OU = Example Test CN = Example Test CA EOF以下のディレクトリーを作成します。
# mkdir certs crl newcerts以下のファイルを作成します。
# touch index.txt crlnumber index.txt.attrシリアルファイルに番号 01 を書き込みます。
# echo 01 > serialこのコマンドは、シリアル番号内に 01 を書き込みます。これは証明書のシリアル番号です。この CA によってリリースされる新しい証明書ごとに、数が 1 つ増えます。
OpenSSL root CA キーを作成します。
# openssl genrsa -out rootCA.key 2048自己署名 root 認証局証明書を作成します。
# openssl req -batch -config ca.cnf \ -x509 -new -nodes -key rootCA.key -sha256 -days 10000 \ -set_serial 0 -extensions v3_ca -out rootCA.crtユーザー名のキーを作成します。
# openssl genrsa -out example.user.key 2048このキーは、セキュリティーが保護されていないローカルシステムで生成されるため、キーがカードに格納されると、キーがシステムから削除されます。
キーはスマートカードで直接作成できます。これを行う場合は、スマートカードの製造元が作成した手順に従います。
証明書署名リクエスト設定ファイルを作成します (このテキストを ca ディレクトリーでコマンドラインにコピーします)。
# cat > req.cnf <<EOF[ req ] distinguished_name = req_distinguished_name prompt = no [ req_distinguished_name ] O = Example OU = Example Test CN = testuser [ req_exts ] basicConstraints = CA:FALSE nsCertType = client, email nsComment = "testuser" subjectKeyIdentifier = hash keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment extendedKeyUsage = clientAuth, emailProtection, msSmartcardLogin subjectAltName = otherName:msUPN;UTF8:testuser@EXAMPLE.COM, email:testuser@example.com EOFexample.user 証明書用の証明書署名リクエストを作成します。
# openssl req -new -nodes -key example.user.key \ -reqexts req_exts -config req.cnf -out example.user.csr新しい証明書を設定します。有効期限は 1 年に設定されています。
# openssl ca -config ca.cnf -batch -notext \ -keyfile rootCA.key -in example.user.csr -days 365 \ -extensions usr_cert -out example.user.crtこの時点で、認証局と証明書が正常に生成され、スマートカードにインポートできる状態になります。