SSL証明書を”とある事情で”エクスポートする際に、エクスポート不可能フラグが立てられていて秘密キーがエクスポートできない場合がある。
よくあるのは銀行系の証明書で他のマシンでもログインしたいのに!
って感じなんでしょうか。windows標準の機能とかでは「もうマジ無理」って感じなんですが、いろいろ探していたらやっぱりありました。
Jailbreak
名前がもう危険な匂いしてますが、アメリカのセキュリティ企業との事なので大丈夫だと思いますが、もし誰か以下を実行する場合は完全に自己責任でお願いします。
秘密キーがエクスポートできて、IEからpfxでエクスポート出来るなら、何の問題も無い。
pemに変換とかも、opensslで簡単楽ちん。linuxマシンで
openssl pkcs12 -in <file.pfx> -out <out.pem>
てな感じでしょうか。
で、秘密キーのエクスポートが不可だと、pfxではエクスポートできず、p7bとかになってしまう。
そこでJailbreakとなるわけです。
操作は簡単。
上のサイトからJailbreakをダウンロード。
インストールとかは必要なく、コマンドプロンプトから以下を実行するだけ。
まずは、マシンにインストールされている証明書の一覧を見ますよ。
C:\Users\hogeuser\Downloads>jbstore.exe -l Listing certificates in USER store Subject Name: <発行先の名前> Serial Number: d9 h9 fe cd fh 6s ee 1f 0d 19 ea b9 ac af 23 5a Subject Name: <発行先の名前> Serial Number: d6 dg 7h s6 6a 06 b6 7e 83 86 0s 1d 9g a2 f4 h3
ズラーっと出てきます。
ちなみに、オプションは以下
Usage: jbstore <action> <options> Actions: -l List all certificates -a Dump all certificates -1 Dump one certificate Options: -s <store> Cerificate store, "SYSTEM" or "USER" (default is "USER") -p <password> Password (default is "password" -o <file name> Output file (default is "out.pfx" -n <subject name> Subject name to use when dumping one cerificate Example: jbstore -l -s "USER" jbstore -d -o foo.pfx -p foo jbstore -1 n "iSEC User"
で、エクスポートしたい証明書のSubject Nameを指定して以下を実行。
C:\Users\hogeuser\Downloads>jbstore.exe -1 -n "Subject Name" -p "password"
Subject Nameとか、ちゃんと””で囲わないとエラーになるようです。
また、-pでパスワードを指定しない場合はデフォルトで「password」がパスワードとなるようです。
これは他マシンに移動して使う場合とかに必要になるので、控える&デフォルトでの運用はやめよう、という事ですな。
で、これだけで終了。
jailbreak.exeを置いたディレクトリにout.pfxが出来ております。
秘密キーがエクスポートできなくて苦労していたら、きっとpfxの拡張子が燦然と輝いて見えることでしょうw
なんか、秘密キーを取得する完全バックアップツールとかあるようですが、勢いで買わなくて良かった…。