/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
これを発展させてユーザ名を変数に取るようにしたら機械的に生成できそう。