証明書をとあるアプライアンス製品にインストールしようとしたのですが、PEM形式ではインストールできなかったので、変換する必要がありました。忘れないうちにメモっておきます。
PEM形式って?
証明書の形式の一つで中身はASCIIテキストです。
-----BEGIN CERTIFICATE-----
MIIHSjCCBjKgAwIBAgrgerthgj5rtSj3iPrcE6Ga8DANBgkqhkiG9w0BAQsFADBa
MQswCQYDVQQGEwJKUDElMCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4s
fjjgojeg,thsmEFkrgkefERGHjasTjhr4eJKYUKDeg・・・・・
fl2x8lqH8aHcGYyY9e8Mc+vm/uD5PqKaT3RpD//Hex/8akvCZ3fXm1k8/U6sKg==
-----END CERTIFICATE-----
こんな感じで、-----BEGIN CERTIFICATE-----ではじまり、-----END CERTIFICATE-----で終わります。
p12への変換
変換するのに必要なものは
- 署名済みの証明書
- 証明書の秘密鍵
- 秘密鍵のパスフレーズ
- 中間証明書
になります。用意しましょう。
もちろん、opensslをインストールしておく必要はあります。
$ openssl pkcs12 -export -in <署名済みの証明書ファイル名> -inkey <秘密鍵のファイル名> -certfile <中間証明書のファイル名> -out <出力するファイル名>
実行すると
Enter pass phrase for <秘密鍵のファイル名>: <秘密鍵のパスフレーズ>
Enter Export Password: <p12の出力パスフレーズ>
Verifying - Enter Export Password: <p12の出力パスフレーズ>
そうするとp12形式で出力されます。
fileコマンドでファイル形式を確認すると、pemはASCII、p12はdataになります。