OpenSSLでつまづいた話

背景
諸事情でPKCS12ファイルから証明書と秘密鍵を取り出した
OpenSSL Light のv3.1.1をEXEファイルでインストールし、
1.x系の手順書を参考にして作業を進めたが、エラーしかかえってこなかった
調べてもOpenSSL 1.x系の記事しかでてこなかったため残しておきます

前提
・OpenSSL Light 3.1.1 Windows 64bitのEXEでインストール
・環境変数は通している
  - コマンドプロンプトでOpenSSLコマンドが実行できる

※注 内容が拙いですが、現状の理解度そのままで記載しています、ご了承ください。
      各々の環境で一部読み替えが必要になります。
      この操作で起こった事象については、一切の責任を取れません、ご認識願います。
      また、コマンドに基づいては各公式ドキュメントを参照してください。


本題
OpenSSL 1.x -> 3.xのアップデートに伴いいくつかのコマンドが
セキュリティ上の問題で通常呼び出しできないようになっている?

利用するためには

legacy.dll

を利用できるように設定する必要がある
configファイルに下記項目を追加する必要があるみたいだが、
実施したも、さんしょうできずエラーとなった、理由は不明…

legacy_init = legacy

[legacy_init]
activate = 1 

エラーメッセージを元にGitHubやStack overflowを探すと、
環境変数に追加をするべきとの記述があったため
以下コマンドでいったん環境変数追加

set OPENSSL_MODULES="インストールPath/bin"

その後、公式のリファレンスなどを参照し、取出し成功。

証明書
$openssl pkcs12 -in example.p12 -clcerts -nokeys -out example.pem -legacy

鍵
$openssl pkcs12 -in example.p12 -nocerts -nodes -out example.key -legacy

上記コマンドから分かるようにオプションで

-legacy

の指定が必要となる点、注意が必要となる。

後書き
やりたいことはできました。
ただ、これだと一時的にしかコマンド実施できない認識です。
後日、setxなどでずっと使えるようにします。

この記事が気に入ったらサポートをしてみませんか?