クライアント証明書発行(作成・署名)時のパスワードをターミナルから入力する

/etc/pki/tls/misc/CA -newreq だとパスワードを聞かれるので
内部で実行されている openssl reqを直接実行して、標準入力から読み込むようにする。

スクリプトにがっつりパスワードを書いていて無条件に署名するので
本番運用するCAの場合は取り扱い注意。

やっていること
1. openssl genrsa で暗号化されてない鍵を作成
2. openssl reqではcommon nameは6行目なので、ここにusernameなどを指定する。
3. /etc/pki/tls/misc/CA -signにyesを渡して自動的に証明 (内部的にはopenssl caが実行されてる)
4. openssl pkcs12 でクライアント配布用のpkcs#12ファイルを作成。引数に-password pass:"パスワード" を渡してパスワード付きで。

cd /path/to/usercert/
openssl genrsa 2048 > newkey.pem
openssl req -new -key newkey.pem << EOF > newreq.pem
JP
Osaka
Osaka
Foo Bar Co., Ltd.

username@example.com



EOF
yes | /etc/pki/tls/misc/CA -sign
openssl pkcs12 -export -clcerts -inkey newkey.pem -in newcert.pem \
  -certfile /etc/pki/CA/cacert.pem -out username.p12 -password pass:hogehoge

これを発展させてユーザ名を変数に取るようにしたら機械的に生成できそう。