PKCS#12 は秘密鍵や公開鍵証明書のバックアップや他のマシンへの移行するために適した規格である。NetscapeCommunicator 4.04 以降と InternetExplorer 4.0 以降でインポート/エクスポートともに PKCS#12 が使用されている。

 PKCS#12 が公開される以前に Microsoft PFX0.020 という規格が存在していた。
 PFX (Personal Exchange Syntax and Protocol Standard) は秘密鍵や公開鍵証明書などに限らず、クレジット番号などの個人情報を格納するための規格である。
 Microsoftの仕様であったが NetscapeCommunicator 4.03 以前でのみ実装が行われなかった。当時は PKCS#12 が存在していなかったため PFX に基づいて実装されていたようである。

 その後 PFX をベースに PKCS#12 の標準化が行われた。
相互運用性を考慮して NetscapeCommunicator 4.04 以降及び InternetExplorer 4.0 以降はインポートする場合に限り PFX がサポートされている。これらのバージョンにおいてはエクスポートする場合に  PFX は利用されず PKCS#12 が用いられる。
 そのため NetscapeCommunicator 4.04 以降及び InternetExplorer 4.0 以降のブラウザから PKCS#12 でエクスポートした PKCS#12 ファイルは NetscapeCommunicator 4.03 以前では利用できない。また Netscape 3.x 及び InternetExplorer 3.x はこのようなインターフェイスは存在していない。

ブラウザの種類
PFX
PKCS#12
import
export
import
export
Netscape
Communicator
4.03 以前
×
×


4.04 以降



×
Internet Explorer 4.0 以降


×
図 7 PFX/PKCS#12 対応一覧

 PKCS#12 は 秘密鍵格納のために PKCS#8 を利用する。しかし RSA の鍵しか対応していないため DH/DSS などに適用するためには PKCS#8 を拡張した PKCS#11 が利用されている。


 PKCS#12 で使用されるハッシュアルゴリズムは SHA-1 であり、秘密鍵暗号方式は RC4/128, RC4/40, Triple-DES(2key), Triple-DES(3key), RC2/128 及び RC2/40 であるが、暗号輸出規制により使用できるアルゴリズムが制限されている。


InternetExplorer においては、インポートする場合はすべてのアルゴリズムにサポートしているが、 米国内版/輸出版ともにエクスポートする場合は RC2/40 のみサポートしている。

NetscapeCommunicator においては、米国内版/輸出版ともにエクスポートする場合には証明書の暗号化には RC2/40 が、 秘密鍵の暗号化には Triple-DES(3key) が使用される。

インポートする場合、米国内版ではすべてのアルゴリズムにサポートしているが、 輸出版の証明書の暗号化には RC4/40 と RC2/40 しかサポートしていない。

ブラウザの種類
証明書の
暗号化
秘密鍵の
暗号化
Internet
Explorer
import
すべて可
すべて可
export
RC2/40
RC2/40
Netscape
Communicator
import
すべて可
すべて可
import (輸出版)
RC2, RC2/40
RC2/40
export
RC2/40
Triple-DES
図 8 使用アルゴリズム一覧

 InternetExplorer から NetscapeCommunicator に PKCS#12 で証明書/秘密鍵を移行した場合、インポート作業は成功するが S/MIME や SSL を利用する際に不都合が生じることがある。
 NetscapeCommunicator では X.509 v3 証明書の独自拡張として nsCertType が用いられており証明書の用途に関する情報が組み込まれている。

 そのため SSL client(bit-0) や S/MIME(bit-2) のビットが立っていない場合に Netscape では SSL や S/MIME 機能が利用できない。
 InternetExplorer から NetscapeCommunicator に移行する場合には公開鍵証明書の v3 拡張におけるnsCertTypeが必要となる。

 PKCS#12 に対応している実装は NetscapeCommunicator や InternetExplorer のほかフリーの暗号ライブラリである OpenSSL が存在する。