ここに記載されているように、JSCEP を使用して証明書署名要求を EJBCA に登録しようとしています: https://github.com/jscep/jscep
同じ形式の csr と秘密鍵 (ポート 8443 での ssl 認証用) を使用して Web コンソールから csr を送信できますが、JSCEP 経由で試してみると、EJBCA ログに次のエラーが記録されます。
SCEP 要求の処理中にエラーが発生しました。: org.cesecore.certificates.ca.SignRequestException: 要求にパスワードがありません。
Web UI を介して入力する必要があるようなエンド エンティティのユーザー名と登録コードが必要だと推測していますが、JSCEP API のどこにもその情報を入力する場所がありません。秘密鍵で十分かもしれませんが、UI が両方を必要としていたため、これは少し奇妙に思えます。
CSRにパスワードが必要であることも意味していると思いますが、そうではありませんが、UIでは問題が発生しなかったため、なぜそうなるのかわかりません。
キーストア (p12 ファイルから解析され、パスワードが含まれる) と csr は両方とも、プログラムで生成されるのではなく、ファイルから解析されます。csr は、キーを持っていないサード パーティからのものです。
jscep クライアント経由の登録リクエストは次のようになります。
client.enrol(証明書、privateKey、リクエスト、config.getCaProfile());
証明書と秘密鍵はどちらも p12 ファイルから取得され、リクエストは渡された csr (pkcs12) から解析されます。caProfile は、https::8443/ejbca/adminweb/ のホームページの表にリストされている CA 名です。
パラメータが間違っている場合や、どこかにパスワードを含める必要がある場合は、API でどのようにすればよいか教えてください。