Git Bash で OpenSSL を実行する方法
pem を pfx に変換する必要があり、方法を調べていたら Git Bash で openssl コマンドを実行すればいいらしいことが分かった。
いざコマンド実行してみたらエラーすら出ずに無反応になったので解決方法等をまとめ。
■簡易版
■詳細版
問題発生の流れ
- pem を pfx に変換するため、Git Bash で openssl コマンドを実行
- 「Enter Export Password」が表示される想定だが、何も表示されない
- 待機しても変化なし、処理されていない模様
$ openssl pkcs12 -export -in hoge.pem -inkey hogekey.pem -out hoge.pfx // 何も表示されず、処理も完了しない
原因
- Git インストール時「Configuring the terminal emulator to use with Git Bash」の設定で「Use MinTTY」を選択しているため
- MinTTY は WindowsAPI と互換性の問題があり、WindowsAPIを使用するプログラムを実行すると正常に動作しない
参考:MinTTY の Tips
https://github.com/mintty/mintty/wiki/Tips#inputoutput-interaction-with-alien-programs
解決方法
- コマンドの文頭に
winpty
を入力して実行する
$ winpty openssl pkcs12 -export -in hoge.pem -inkey hogekey.pem -out hoge.pfx Enter Export Password: Verifying - Enter Export Password: // 実行された
- 毎回入力するのが手間であれば、.bashrc にエイリアスを登録する
// .bashrc に以下を登録 ※~\.bashrcが無ければ手動で作成 alias openssl='winpty openssl' // ターミナルでコマンド実行 $ openssl pkcs12 -export -in hoge.pem -inkey hogekey.pem -out hoge.pfx Enter Export Password: Verifying - Enter Export Password: // winpty なしでも実行された
Git インストール時「Configuring the terminal emulator to use with Git Bash」の設定で「Use Windows' default console window」を選択する
※ターミナルがコマンドプロンプトになる
別の回避方法があるので、今回の問題のためだけに選択しなくてもいいのではと思うGit インストール時「Configuring experimental options」の設定で「Enable experimental support for pseudo consoles」にチェックを入れる
※注意書きにあるが、既知のバグがあるらしい
winpty とは?
- Windows コンソールプログラムと通信するためのインターフェースを提供するパッケージ
- MinTTY と WindowsAPI の間に入って非互換性を解決してくれる
参考:winpty の Readme
https://github.com/rprichard/winpty#readme