検索
連載

Windows OSで、証明書や秘密鍵をPEM形式に変換してエクスポートするTech TIPS(2/2 ページ)

WindowsとUNIX/Linuxでは、電子証明書やその秘密鍵の取り扱い方が異なる。そのため、Windowsで使っている証明書をUNIX/Linux系システムへ移す際、保存ファイルのフォーマット変換が必要になることがある。Windows OS上でその変換を行う手順を紹介する。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
前のページへ |       

テキスト形式の.cer/.crtファイルは変換不要

 ここからは、移したい証明書が証明書ストアになく、かつ.pfxファイル以外の形式でファイルに保存されているという前提で、それをPEM形式に変換する方法を紹介していく。

 拡張子が「.cer」「.crt」であるファイルには通常、テキストまたはバイナリで証明書が格納されている。もし次のようなテキストのブロックが含まれているなら、多くの場合、それはPEM形式である。

  • -----BEGIN CERTIFICATE-----」から始まり、
  • 半角の英数字と「/」「+」「=」からなるデータ行が続き、
  • -----END CERTIFICATE-----」で終わる
テキストの証明書ファイルをメモ帳で開いた例
テキストの証明書ファイルをメモ帳で開いた例

 PEM形式かどうかOpenSSLで確かめるには、次のコマンドラインを実行してエラーメッセージが表示されないことを確認すればよい。

openssl x509 -inform PEM -text -noout -in <証明書ファイル名>

PEM形式かどうか確認するためのコマンドライン

オプション 意味
x509 証明書を取り扱うためのコマンド
-inform PEM 入力ファイルの形式としてPEMを指定する。デフォルトの形式はPEMなので、通常は指定不要
-text 分かりやすいテキスト形式で証明書の内容を出力する
-noout 証明書をファイルに出力しない
-in <証明書ファイル名> 入力ファイルの指定(この場合は証明書ファイル)
PEM形式かどうか確認する際のOpenSSLのオプション

OpenSSLコマンドで証明書ファイルかどうかを確認する(PEM形式だった場合)
OpenSSLコマンドで証明書ファイルかどうかを確認する(PEM形式だった場合)

OpenSSLコマンドで証明書ファイルかどうかを確認する(PEM形式ではなかった場合)
OpenSSLコマンドで証明書ファイルかどうかを確認する(PEM形式ではなかった場合)

バイナリの.cerファイルからPEM形式で証明書を取り出す

 .cer/.crtファイルをメモ帳などのテキストエディタで開くと文字化けが多数表示される場合、それは「DER(Distinguished Encoding Rules)」と呼ばれるバイナリの形式である可能性が高い。

DER形式で保存された証明書ファイルをメモ帳で開いたところ
DER形式で保存された証明書ファイルをメモ帳で開いたところ

●Windows OSのGUIでDER形式の証明書ファイルをPEM形式に変換する

 エクスプローラでDER形式の証明書ファイルをダブルクリックすれば、あとは前述したエクスポートの手順でPEM形式に変換できる。

Windows OSのGUIでDER形式の証明書ファイルをPEM形式に変換する(1/2)
Windows OSのGUIでDER形式の証明書ファイルをPEM形式に変換する(1/2)
Windows OSのGUIでDER形式の証明書ファイルをPEM形式に変換する(2/2)
Windows OSのGUIでDER形式の証明書ファイルをPEM形式に変換する(2/2)

■操作手順

  1. 対象の証明書を利用しているアプリの仕様を確認して、証明書ファイルが存在するフォルダを特定し、エクスプローラで開く
  2. DER形式の証明書ファイル(拡張子は「.cer」「.crt」など)をダブルクリックして証明書の詳細ダイアログを開く
  3. 詳細]タブを選択
  4. ファイルにコピー]ボタンをクリックして、エクスポートのウィザードを起動する。後は前述の手順でPEM形式にエクスポート

●コマンドラインでDER形式の証明書ファイルをPEM形式に変換する

 まず、コマンドプロンプトを開いてDER形式の証明書ファイルがあるフォルダへ移動しておく。

 DERからPEMへの変換は、certutil.exeでもOpenSSLでも可能だ。

certutil -f -encode <DER形式の証明書ファイル名> <出力の証明書ファイル名>

certutil.exeで、DER形式(バイナリ)からPEM形式へ変換するためのコマンドライン

オプション 意味
-encode Base 64でエンコード
DER形式(バイナリ)からPEM形式へ変換する際のcertutil.exeのオプション

openssl x509 -in <DER形式の証明書ファイル名> -inform DER -out <出力の証明書ファイル名> -outform PEM

OpenSSLで、DER形式(バイナリ)からPEM形式へ変換するためのコマンドライン

オプション 意味
-out <出力ファイル名> 出力ファイルの指定
-outform PEM 出力ファイルの形式としてPEMを指定する(デフォルトがPEM形式なので、通常は明示的に指定する必要はない)
DER形式(バイナリ)からPEM形式へ変換する際のOpenSSLのオプション

.p7bファイルから各証明書を取り出してPEM形式で保存する

 認証局(証明機関)から発行された証明書をメールで受け取った際、拡張子が「.p7b」である証明書ファイルが添付されていることがある。これは「PKCS(Public-Key Cryptography Standards) #7」と呼ばれる仕様で証明書が保存されているファイルだ。Base 64エンコードのテキスト形式での例を以下に示す(バイナリの場合もある)。

PKCS #7形式の証明書ファイルの例(Base 64エンコード)
PKCS #7形式の証明書ファイルの例(Base 64エンコード)

 .p7bファイルには、対象の証明書だけではなくCA証明書(Certificate Authority:認証局、証明機関)も含まれていることがある。これをUNIX/Linux系のサーバやサービスで利用するには、各証明書を別々のPEM形式のファイルに保存しなければならないことがよくある。

●Windows OSのGUIで.p7bファイルから各証明書を取り出す

 まずは、対象のメールから添付ファイル(.p7bファイル)をローカルのフォルダに保存する。それをエクスプローラで表示し、.p7bファイルをダブルクリックすると、前述の管理ツールのようなウィンドウが現れる。後は同様の手順でPEM形式にエクスポートできる。

Windows OSのGUIで.p7bファイルから各証明書をPEM形式で取り出す(1/2)
Windows OSのGUIで.p7bファイルから各証明書をPEM形式で取り出す(1/2)
Windows OSのGUIで.p7bファイルから各証明書をPEM形式で取り出す(2/2)
Windows OSのGUIで.p7bファイルから各証明書をPEM形式で取り出す(2/2)

■操作手順

  1. エクスプローラで.p7bファイルをダブルクリック
  2. 前述した証明書の管理ツールと同様の画面が表示されるので、左ペインでツリーを展開して[証明書]を選択
  3. 右ペインに、このファイルに含まれている証明書が表示される。取り出したいものをダブルクリックして証明書のダイアログを表示させる
  4. 詳細]タブを選択
  5. ファイルにコピー]ボタンをクリックして、エクスポートのウィザードを起動し、前述の手順で証明書をファイルへエクスポート

 CA証明書のうち、どれがルートCAで、どれが中間CAのものか確認するには、上記の証明書の詳細ダイアログで[証明のパス]タブを選択し、「証明のパス」欄のツリーを確認すればよい。

●OpenSSLで.p7bファイルから各証明書を取り出す

 OpenSSLで.p7bファイルに含まれる各証明書をPEM形式に変換するには、まず次のコマンドラインを実行する。

openssl pkcs7 -in <PKCS #7の証明書ファイル名> -inform PEM -out <出力の証明書ファイル名> -outform PEM -print_certs

.p7bファイルから各証明書を取り出すためのコマンドライン

オプション 意味
pkcs7 PKCS #7の証明書ファイルを取り扱うためのコマンド
-print_certs 入力ファイルに含まれる複数の証明書を出力する
.p7bファイルから各証明書を取り出す際のOpenSSLのオプション

 出力された証明書ファイルには、次のようにサーバ証明書とCA証明書が並んで記載されているので、テキストエディタで切り出して別々のファイルに保存する。

OpenSSLで.p7bファイルから出力された証明書ファイル
OpenSSLで.p7bファイルから出力された証明書ファイル

■更新履歴

【2022/07/06】証明書ストアの説明とcertutil.exeで変換する方法を追記しました。Windows 11に対応しました。

【2016/02/05】初版公開。


「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

前のページへ |       
ページトップに戻る