Mac 上で openssl を使う時は、ソースからビルドしたコマンドを使っていて気が付かなかったのだが、Mac デフォルトの openssl は OpenSSL のそれではないらしい。
細かな機能が違う。
hpkisignj の Ver1.0 を作成するとき、諸々の検証用にデフォの openssl コマンドを使っていたのだが、どうも思ったように動かない。
調べたら、そういうことだった。
というわけで Mac で openssl を使う時は、OpenSSL の openssl を入れましょう。
簡単には homebrew を使って
brew install openssl
でいいでしょう。
現在(2024/5)だと Ver3.3.0 が入るようです。
こちらだと従来の openssl genrsa のほかに openssl genpkey あたりも使える。
生成アルゴリズムを明示したいときは
openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 > private_key.pem
といった感じで。
ただし、アルゴリズムが最新すぎるせいか、このように作成した証明書を各種言語のライブラリが正しく読めないことがままあるようです。
そういう場合は genrsa の方でいいと思います。