Windows OSで、証明書や秘密鍵をPEM形式に変換してエクスポートする:Tech TIPS(2/2 ページ)
WindowsとUNIX/Linuxでは、電子証明書やその秘密鍵の取り扱い方が異なる。そのため、Windowsで使っている証明書をUNIX/Linux系システムへ移す際、保存ファイルのフォーマット変換が必要になることがある。Windows OS上でその変換を行う手順を紹介する。
テキスト形式の.cer/.crtファイルは変換不要
ここからは、移したい証明書が証明書ストアになく、かつ.pfxファイル以外の形式でファイルに保存されているという前提で、それをPEM形式に変換する方法を紹介していく。
拡張子が「.cer」「.crt」であるファイルには通常、テキストまたはバイナリで証明書が格納されている。もし次のようなテキストのブロックが含まれているなら、多くの場合、それはPEM形式である。
- 「-----BEGIN CERTIFICATE-----」から始まり、
- 半角の英数字と「/」「+」「=」からなるデータ行が続き、
- 「-----END CERTIFICATE-----」で終わる
PEM形式かどうかOpenSSLで確かめるには、次のコマンドラインを実行してエラーメッセージが表示されないことを確認すればよい。
openssl x509 -inform PEM -text -noout -in <証明書ファイル名>
オプション | 意味 |
---|---|
x509 | 証明書を取り扱うためのコマンド |
-inform PEM | 入力ファイルの形式としてPEMを指定する。デフォルトの形式はPEMなので、通常は指定不要 |
-text | 分かりやすいテキスト形式で証明書の内容を出力する |
-noout | 証明書をファイルに出力しない |
-in <証明書ファイル名> | 入力ファイルの指定(この場合は証明書ファイル) |
PEM形式かどうか確認する際のOpenSSLのオプション |
バイナリの.cerファイルからPEM形式で証明書を取り出す
.cer/.crtファイルをメモ帳などのテキストエディタで開くと文字化けが多数表示される場合、それは「DER(Distinguished Encoding Rules)」と呼ばれるバイナリの形式である可能性が高い。
●Windows OSのGUIでDER形式の証明書ファイルをPEM形式に変換する
エクスプローラでDER形式の証明書ファイルをダブルクリックすれば、あとは前述したエクスポートの手順でPEM形式に変換できる。
■操作手順
- 対象の証明書を利用しているアプリの仕様を確認して、証明書ファイルが存在するフォルダを特定し、エクスプローラで開く
- DER形式の証明書ファイル(拡張子は「.cer」「.crt」など)をダブルクリックして証明書の詳細ダイアログを開く
- [詳細]タブを選択
- [ファイルにコピー]ボタンをクリックして、エクスポートのウィザードを起動する。後は前述の手順でPEM形式にエクスポート
●コマンドラインでDER形式の証明書ファイルをPEM形式に変換する
まず、コマンドプロンプトを開いてDER形式の証明書ファイルがあるフォルダへ移動しておく。
DERからPEMへの変換は、certutil.exeでもOpenSSLでも可能だ。
certutil -f -encode <DER形式の証明書ファイル名> <出力の証明書ファイル名>
オプション | 意味 |
---|---|
-encode | Base 64でエンコード |
DER形式(バイナリ)からPEM形式へ変換する際のcertutil.exeのオプション |
openssl x509 -in <DER形式の証明書ファイル名> -inform DER -out <出力の証明書ファイル名> -outform PEM
オプション | 意味 |
---|---|
-out <出力ファイル名> | 出力ファイルの指定 |
-outform PEM | 出力ファイルの形式としてPEMを指定する(デフォルトがPEM形式なので、通常は明示的に指定する必要はない) |
DER形式(バイナリ)からPEM形式へ変換する際のOpenSSLのオプション |
.p7bファイルから各証明書を取り出してPEM形式で保存する
認証局(証明機関)から発行された証明書をメールで受け取った際、拡張子が「.p7b」である証明書ファイルが添付されていることがある。これは「PKCS(Public-Key Cryptography Standards) #7」と呼ばれる仕様で証明書が保存されているファイルだ。Base 64エンコードのテキスト形式での例を以下に示す(バイナリの場合もある)。
.p7bファイルには、対象の証明書だけではなくCA証明書(Certificate Authority:認証局、証明機関)も含まれていることがある。これをUNIX/Linux系のサーバやサービスで利用するには、各証明書を別々のPEM形式のファイルに保存しなければならないことがよくある。
●Windows OSのGUIで.p7bファイルから各証明書を取り出す
まずは、対象のメールから添付ファイル(.p7bファイル)をローカルのフォルダに保存する。それをエクスプローラで表示し、.p7bファイルをダブルクリックすると、前述の管理ツールのようなウィンドウが現れる。後は同様の手順でPEM形式にエクスポートできる。
■操作手順
- エクスプローラで.p7bファイルをダブルクリック
- 前述した証明書の管理ツールと同様の画面が表示されるので、左ペインでツリーを展開して[証明書]を選択
- 右ペインに、このファイルに含まれている証明書が表示される。取り出したいものをダブルクリックして証明書のダイアログを表示させる
- [詳細]タブを選択
- [ファイルにコピー]ボタンをクリックして、エクスポートのウィザードを起動し、前述の手順で証明書をファイルへエクスポート
CA証明書のうち、どれがルートCAで、どれが中間CAのものか確認するには、上記の証明書の詳細ダイアログで[証明のパス]タブを選択し、「証明のパス」欄のツリーを確認すればよい。
●OpenSSLで.p7bファイルから各証明書を取り出す
OpenSSLで.p7bファイルに含まれる各証明書をPEM形式に変換するには、まず次のコマンドラインを実行する。
openssl pkcs7 -in <PKCS #7の証明書ファイル名> -inform PEM -out <出力の証明書ファイル名> -outform PEM -print_certs
オプション | 意味 |
---|---|
pkcs7 | PKCS #7の証明書ファイルを取り扱うためのコマンド |
-print_certs | 入力ファイルに含まれる複数の証明書を出力する |
.p7bファイルから各証明書を取り出す際のOpenSSLのオプション |
出力された証明書ファイルには、次のようにサーバ証明書とCA証明書が並んで記載されているので、テキストエディタで切り出して別々のファイルに保存する。
■この記事と関連性の高い別の記事
- Windowsにインストールされている電子証明書を確認する(GUI編)(TIPS)
- Windowsの証明書サービスでサーバ証明書を発行する(TIPS)
- SSLテスト用にサーバ証明書を自己発行する(IIS 5.0編)(TIPS)
- Windowsでリモートデスクトップ接続のサーバに「正しい」証明書を割り当てる(TIPS)
- WebサーバーにSSLの証明書が正しくインストールされているか確認する(TIPS)
- Windowsで「不正なCAルート証明書」を確認して削除する(TIPS)
- メーラにデジタル証明書を設定する(Thunderbird編)(TIPS)
- WindowsでWebサイトのデジタル証明書を確認する(自己発行されたデジタル証明書に注意)(TIPS)
- メーラにデジタル証明書を設定する(Outlook Express編)(TIPS)
- WindowsにOpenSSLをインストールして証明書を取り扱う(基本編)(TIPS)
■更新履歴
【2022/07/06】証明書ストアの説明とcertutil.exeで変換する方法を追記しました。Windows 11に対応しました。
【2016/02/05】初版公開。
Copyright© Digital Advantage Corp. All Rights Reserved.