前回作成したプライベート認証局(以下CA)でクライアント証明書を作ります。クライアント証明書も途中まではサーバ証明書の発行と手順は変わりません。プライベート証明書を利用する端末へ渡すためのフォーマットPKCS12のファイルを作成する手順が加わります。
クライアント秘密鍵(KEY)の作成。
KEYから証明書署名要求(CSR)の作成。
CSRへCAが署名を行いクライアント証明書(CRT)を発行。
KEYとCRTとCA証明書と格納したPKCS12ファイルを作成。
まずは、以下のコマンドでクライアント秘密鍵を作成する。
実行後パスフレーズを求められ、入力するとクライアント秘密鍵が作成される。
cd /etc/pki/CA-PRIVATE/private
openssl genrsa -out taro.yamada.key -des3 2048
次にCAに署名をしてもらう為に必要な、証明書署名要求(CSR)を作成する。
色々と入力を求められるので、作成したopenssl.cnfのデフォルト値を利用するため、-configで openssl.cnfファイルを指定する。
openssl req -new -key taro.yamada.key -out taro.yamada.csr -config /etc/pki/CA-PRIVATE/openssl.cnf
Country Name ( 2 letter code) [ JP]:【未入力 Enter】
State or Province Name ( full name) [ Tokyo]:【未入力 Enter】
Locality Name ( eg, city) [ Toshima-ku]:【未入力 Enter】
Organization Name ( eg, company) [ Clarus LLC]:【未入力 Enter】
Organizational Unit Name ( eg, section) [ Information Systems Dev.]:【未入力 Enter】
Common Name ( eg, your name or your server’s hostname) [] :【ユーザ名を入力】
Email Address [] :【メールアドレスを入力】
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password [] :【未入力 Enter】
An optional company name [] :【未入力 Enter】
作成したCSRにCAで署名します。
cd /etc/pki/CA-PRIVATE/certs/
openssl ca -in /etc/pki/CA-PRIVATE/private/takashi.uchino.csr -out takashi.uchino.crt -config /etc/pki/CA-PRIVATE/openssl.cnf
実行後、CA秘密鍵のパスフレーズを求められ、パスフレーズ入力後にクライアント証明書の内容が出力されます。
同時にクライアント証明書の有効期限も出力されますが、プライベート認証局 を作成した際に指定したデフォルト値が適用されているので、必要であればopensslでオプション指定することで変更すること。
Enter pass phrase for /etc/pki/CA-PRIVATE/private/cakey.pem:【CA秘密鍵のパスフレーズ】
Check that the request matches the signature
(省略)
Sign the certificate? [ y/n]:【y 入力】
1 out of 1 certificate requests certified, commit? [ y/n]【y 入力】
もし、下記メッセージが出力されて署名ができない場合は、opensslのコマンドで「-policy policy_anything」を追加してみる。
failed to update database
TXT_DB error number 2
これでクライアント秘密鍵とクライアント証明書が出来たので、この2つとCA証明書を格納したコンテナフォーマットであるPKCS12ファイルを作成する。実行後、クライアント秘密鍵のパスフレーズを入力すると次にエクスポート用のパスワードを求められる。エクスポート用パスワードは端末に証明書等を展開する際に必要となるパスワード。
mkdir /etc/pki/CA-PRIVATE/pkcs12
cd /etc/pki/CA-PRIVATE/pkcs12
openssl pkcs12 -export -in ../certs/taro.yamada.crt -inkey ../private/taro.yamada.key -certfile ../cacert.pem -out taro.yamada.p12
これで作成できたPKCS12ファイルを端末へインポートすることでクライアントの秘密鍵と証明書及びCA証明書がインストールされる。