回答:
SSHキーは、単なるRSA、DSA、またはECDSA非対称キーペアです。OpenSSHによって生成されたこのようなキーペアは、すでにOpenSSLおよび他のほとんどのプログラムで使用できます。
(.pub
ファイル出力ssh-keygen
はOpenSSH固有の形式ですが、「プライベート」ファイルにはすでにプライベートキーとパブリックキーの両方が含まれているため、これは無関係です。)
他のSSHソフトウェアには、RFC 4716やPuTTYのPPKなどの独自のストレージ形式がありますが、同じRSA / DSA / ECDSA情報が格納されます。
X.509(SSL、S / MIMEで使用)はやや複雑です。「秘密」キーは同じですが、公開キーファイルの代わりに「証明書」、つまり公開鍵、件名、発行者名、有効期限。X.509 v3証明書では、「キー使用法」や「代替サブジェクト名」などの拡張機能が存在します。証明書全体は、発行者のキーによって署名されます(個別の発行者がいない場合は自己署名されます)。
SSH用のX.509「秘密鍵」ファイルを簡単に使用できます。OpenSSHは同じ形式を使用します。
単純なキーペアからX.509証明書を作成してから自己署名するか、「証明書要求」を作成して、CA(認証局)による署名のために送信することができます。
X.509証明書の情報を表示するには、次を使用します。
certtool -i < foo.pem
certtool -i --inder < foo.crt
openssl x509 -noout -text < foo.pem
openssl x509 -noout -text -inform der < foo.crt
(certtool
GnuTLSの一部です。)
OpenPGP(GPGで使用)キーは最も複雑です。「PGPキー」または「PGPキーペア」と呼ばれるものは、「OpenPGP証明書」と呼ばれる複雑な構造で、次のものが含まれます。
すべてのキーペアには有効期限と使用ビットがあります:データに署名、キーを認証(署名)、暗号化、サービスに認証します。主キーにはデフォルトで「sign」および「certify」ビットがあり、最初のサブキーは「encrypt」です。「認証」サブキーを追加するとgpg-agent
、SSH認証に使用できます。
証明書に含まれるものを確認するには:
gpg --export joe@example.com | gpg -vv
gpg --export joe@example.com | certtool --pgp-certificate-info
(certtool
GnuTLSの一部です。)
X.509証明書とそれに関連付けられた秘密鍵には、いくつかの形式があります。
DERは、証明書のASN.1構造のバイナリエンコーディングです。このようなファイルには通常.crt
、.cer
ファイル拡張子またはファイル名拡張子.der
があります(あまり一般的ではありませんが、見えないことはありません)。
「PEM」形式のファイルには、同じDERエンコードデータが含まれますが、Base64を使用して、「BEGIN THIS」ヘッダーと「END THAT」ヘッダーの間に追加エンコードされます。一般的なファイル名の拡張子はある.pem
の両方が、.crt
とは.cer
時々あまりにも(決してここで使用されています.der
)。
証明書に属する秘密鍵の場合、通常は「PEM」形式が使用されます。ヘッダー「BEGIN PRIVATE KEY」(PKCS#7構造のキー)または「BEGIN RSA (またはDSA) PRIVATE KEY」(ベアキー、OpenSSLフォーマット)。キーが別の.key
ファイルにある場合もあれば、証明書にバンドルされている場合もあります。
PKCS#12と少し古いPFXは、証明書と秘密キー(多くの場合は発行者の証明書も)を保存する暗号化されたコンテナです。この形式は、秘密鍵を使用して証明書をエクスポートまたは「バックアップ」するときに、ほとんどのソフトウェアで使用されます。
わかりにくい状況はOpenPGPです。すべてのデータは同じバイナリ形式に従い、オプションで「装甲」されます(Radix64でエンコードされ、PEMのようなヘッダー間でエンコードされます)。
さまざまな場所にさまざまな形式で保存されます(PGP、GnuPG ssh
、およびいくつかの異なるX.509形式で使用される形式は、とりわけまったく異なります)。混合及び右のオプションを照合することによって、ある程度、それらの間にトランスコードすることが可能となるまでssh-keygen
、pgp
、gpg
/ gpg2
、openssl
等。しかし、一般的には努力する価値はありません。また、さまざまなキー形式がさまざまな量の情報をサポートします。ssh
最小限の追加情報を運び、X.509 PEMおよびDER形式を最も多く運びます。さらに、OSXキーチェーンは単に暗号化されたキー/値ストレージであるため、プログラムのネイティブキー+メタデータ形式とキーチェーンに格納できるものとの間で変換するには、各アプリケーションで一般に異なるメカニズムが必要です。(同様の懸念がKDEウォレットとGNOMEキーチェーンに適用されます。)