web-dev-qa-db-ja.com

Windowsで秘密キーをインポートする方法

X.509証明書とそれに対応する秘密鍵があるとします。 X.509証明書をWindowsに簡単にインポートできますが、秘密キーはどうなりますか?

証明書と秘密キーの両方を "Personal Information Exchange(PKCS#12)"ファイルに変換してインポートすることで、これを実行できる唯一の方法はありますか?

たぶん、この質問はsuperuser.comでより良いでしょうか?いずれにせよ、ありがとう!

36
neubert

あなたの質問に対する答えははいです。 X.509をPFXに変換してインポートする必要があります。 Windowsには個別のキーストアはありません。

次のコマンドでOpenSSLを使用して証明書を変換できます。

openssl pkcs12 -export -out cert.pfx -inkey private.key -in cert.crt -certfile CACert.crt
39
k1DBLITZ

Windowsでは、あなたはcan「自分で」秘密鍵を持っています。プログラムでは、 CryptAquireContext() を使用して、「名前で」キーにアクセスします。 CryptoAPIには、証明書に関係なく、鍵をインポートして使用できるようにする多くの機能が含まれています。

ただし、秘密キーを処理するための既存のグラフィカルインターフェイスやファイル形式はなく、アプリケーションは名前でキーを使用しません。 certificatesを使用します。 Windowsでは、証明書は「別の場所」に格納されますが、「My」ストアの各証明書には、対応する秘密鍵へのリンクをオプションで含めることができます(リンクは実際にはCSP名であり、そのCSP内のコンテナーの名前です)。これは、さまざまなプロトコルで予想されるものに対応します。たとえば、SSLでは、サーバーが秘密鍵を使用してクライアント認証を要求すると、サーバーは実際に証明書を要求します。クライアントは証明書を提示する必要があり、それから、対応する秘密鍵にもアクセスできることを証明します。

したがって、実際には、証明書とキーは「共存」し、キーは証明書を通じてのみ到達します。証明書とその秘密鍵は一緒に移動します。これは、PKCS#12ファイル(別名 "PFX")を意味します。

6
Thomas Pornin

PKCS12(* .p12または* .pfx)は絶対に簡単な方法です。鍵のペアと証明書をp12に組み合わせるための一般的なツールは数多くあります。私のお気に入りはOpenSSLです。これは、これを使用する必要があったすべてのOSで機能し、標準にかなり準拠しているためです。 ここ は、キーペアと証明書が現在どのように格納されているかによって走行距離は異なりますが、さまざまなページのコレクションです。

また、設定がキーのエクスポートを許可する場合、エクスポート機能を備えたほとんどのデバイスはPKCS12生成オプションを提供します-ほとんどのPKI対応アプリケーションの標準、およびこれが標準ではないいくつかのケース(Javaなど)、通常はまだ変換またはエクスポート機能です。

1つのメモ-キーがハードウェアトークンまたはモジュール上にある場合でも、Microsoft Cert Storeから参照できます-証明書をインポートして、キーの保存場所をMicrosoftに指示するだけです...これを行うには、証明書ストアを更新するためのデバイスの指示に従う必要があります。

0
bethlakshmi