OpenSSLの関数にファイルポインタやBIOオブジェクトを渡すとハングアップ(強制終了)する

OpenSSL(正確には暗号化ライブラリlibeay32.lib/crypto.lib)の関数にファイルポインタやBIOオブジェクトを渡すとハングアップすることがあります。

例えばこんな関数

  • PEM_write_RSAPrivateKey()
  • PEM_wite_RSA_PUBKEY()
  • PEM_write_bio_RSAPrivateKey()
  • PEM_wite_bio_RSA_PUBKEY()
  • i2d_RSAPrivateKey_fp()
  • i2d_RSAPublicKey_fp()
  • i2d_RSA_PUBKEY_fp()

これらの関数をコールした瞬間、ハングアップ&強制終了することがあります。

原因と対策

原因と対策はこちらを見てください。 DLL内の関数にファイルポインタを渡すとハングアップする そんな時の原因と対策

簡単に言うと、

  • アプリとOpenSSLライブラリの両方を同じコンパイラ、同じバージョンでビルドする
  • OpenSSLライブラリをスタティックリンクする

のどちらかでOKです。

こんな厄介な現象、多分Windowsだけですかね。Linuxではどうなんでしょう?