問題タブ [certificate-store]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C/C++ で新しい証明書ストアを作成する
C/C++ を使用してプログラムで Windows に新しい証明書ストアを作成しようとしています。
この関数 - から始めて、CryptAcquireContext
次のコードを書きました。
コンテナー名とプロバイダー名の値は、私が従うことになっている設計ドキュメントから取得されました。
これを実行して MMC の証明書スナップインを開いた後、指定された名前のストアが表示されないため、これがストアを作成する正しい方法であるかどうかわかりません。このプログラムは、最初の実行時に 1 を出力し、2 回目以降は 0 を出力します。
これは正しい方法ですか?はいの場合、MMC にストアが表示されないのはなぜですか? いいえの場合、C/C++ を使用して新しい証明書ストアを作成する正しい方法は何ですか?
コードに間違いがあれば遠慮なく指摘してください。
java - Java キーストアには何が必要ですか?
私は純粋な Windows/IIS 環境から来ています。私が知っているのはそれだけで、かろうじてです。Java/Tomcat で実行されるサイトに適用したい GeoTrust から購入したワイルドカード証明書があります。どうやら私はJavaキーストアを作成することになっています。過去に、エクスポートされた PFX ファイルを Java キーストアに正常に変換したことがあります。暗号化された PFX ファイルの内容を (OpenSSL を使用して) 取得し、複数の暗号化されていない .pem ファイルに分割し、それらのヘッダーを削除し、それらを .der ファイルに変換して配置しました (私が秘密鍵であると判断したものと、ルート証明書) を .jks Java キーストアに入れます。
これは私が使用したときはうまくいったように見えましたが、今は再実装する必要があり、何が起こっているのかを理解したいと思っています.CA証明書が必要ですか? もしそうなら、それらは別々にすべきですか、それとも一緒にすべきですか(私は2つあると思います)?ルート証明書は必要ですか? エイリアスとの取引は何ですか?秘密鍵とキーストア自体の両方がパスワードで保護されていますか?
それは私が知っていることです。どんな助けでも大歓迎です。
c# - 証明書の秘密鍵を読み込もうとすると「指定されたプロバイダーの種類が無効です」CryptographicException
サードパーティのサービス プロバイダから共有された証明書の秘密キーを読み取ろうとしています。これを使用して XML を暗号化してからネットワーク経由で送信できます。私は C# でプログラムでこれを行っていますが、これはアクセス許可または構成ミスの問題だと思うので、最も関連性が高いと思われる事実に焦点を当てます。
- この問題はコードに関連しているとは思いません。私のコードは他のコンピューターで動作し、この問題は Microsoft のサンプル コードに影響します。
- 証明書は PFX ファイルとして提供されており、テスト目的のためだけのものであるため、ダミーの証明機関も含まれています。
- MMC.exe を使用して、証明書をローカル マシンの個人用ストアにインポートしてから、関連するすべてのアカウントに秘密キーのアクセス許可を付与し、証明機関を信頼されたルート証明機関にドラッグ アンド ドロップします。
- C# を使用して、(拇印で識別される) 証明書を読み込み、
X509Certificate2.HasPrivateKey
. ただし、キーを読み取ろうとするとエラーが発生します。.NET ではCryptographicException
、プロパティにアクセスしようとすると、「無効なプロバイダ タイプが指定されました」というメッセージがスローされますX509Certificate2.PrivateKey
。Win32 では、メソッドを呼び出すとCryptAcquireCertificatePrivateKey
、同等の HRESULT が返されますNTE_BAD_PROV_TYPE
。 - これは、Microsoft 独自の 2 つのコード サンプルを使用して証明書の秘密キーを読み取るときに発生する例外と同じです。
- ローカル マシンではなく、現在のユーザーの同等のストアに同じ証明書をインストールすると、秘密鍵を正常に読み込むことができます。
- 私は Windows 8.1 をローカル管理者権限で使用しており、通常モードと昇格モードの両方でコードを実行しようとしました。Windows 7 と Windows 8 の同僚は、同じ証明書のローカル マシン ストアからキーを読み込むことができました。
- 同じストアの場所にある自己署名 IIS テスト証明書の秘密キーを正常に読み取ることができます。
- 既に .NET 4.5 をターゲットにしています (このエラーは、フレームワークの一部の古いバージョンで報告されています)。
- これは証明書テンプレートの問題ではないと思います。ローカル マシンと現在のユーザー ストアの両方に等しく影響すると予想されるからです。
同僚とは異なり、IIS マネージャーを使用したり、同じ発行者からの古い証明書を含めたりするなど、さまざまな方法で証明書のアンインストールと再インストールを何度も試みました。MMC に古い証明書または重複した証明書の痕跡が見当たりません。しかし、同じサイズの秘密鍵ファイルが多数あります。最終書き込み時間に基づいて、さまざまなインストール試行の後に取り残されているに違いありません。これらは、それぞれローカル マシンと現在のユーザー ストアの次の場所にあります。
c:\ProgramData\Microsoft\Crypto\RSA\MachineKeys
c:\Users\\AppData\Roaming\Microsoft\Crypto\RSA\S-1-5-21-[残りのユーザー ID]
それで、誰でもアドバイスしてもらえますか:
- MMC を使用して証明書をアンインストールし、孤立した秘密鍵のように見えるすべてのファイルを削除してから、証明書を再インストールして再試行することをお勧めします。
- 手動で削除する必要がある他のファイルはありますか?
- 他に試してみるべきことはありますか?
更新 - 秘密鍵を読み取る試みを示すコード サンプルを追加しました。
windows - 個人用証明書ストアと Web ホスティング証明書ストアの違いは何ですか?
インターネット インフォメーション サービス マネージャーでは、証明書を作成またはインポートするときに、個人用証明書ストアと Web ホスティング証明書ストアのどちらかを選択できます。
違いは何ですか?
c# - x509Store に証明書を追加しても何も実行されない C#
証明書を追加しようとしていますが、追加機能は何もしていないようです。
私は2つの証明書を持っています。どちらも、右クリックして個人の「testStore」ストアに保存することで手動で追加できますが、プログラムで追加しようとすると保存されません。それらの 1 つだけを追加したところ、X509Store オブジェクトには期待どおりにそれが含まれていますが、.Add(cert) を呼び出すと、そこには何も保存されません。
何か不足していますか?
編集 StorePermission (以下のように) を使用してみました。また、管理者アカウントになりすまそうとしましたが、どちらも役に立ちませんでした。
certificate - certutil: 関数が失敗しました: SEC_ERROR_LEGACY_DATABASE: 証明書/キー データベースは、サポートされていない古い形式です
cert8.dbに保存されているiceweasel(firefox)を使用して、検証済みの(自己署名ではない)S / MIME証明書をダウンロードしました
それから私は使用しました:
証明書を一覧表示するために、certutil から提供された証明書の名前を使用して .p12 ファイルを抽出しました。
問題は、p12 が保存されていた PCへのアクセスを失い、別の PC にcert8.db のコピーしかないことです。したがって、コマンドを繰り返しましたcertutil && pk12util
が、certutil は次のエラーで失敗します。
カーネルとlibnss3-tools
バージョンが同じものを含む3台の異なるコンピューターで必死に試しました(p12を正常に抽出した最初のデスクトップのように)。
libnss3-tools
バージョン: 2:3.17.2-1
何かご意見は?
ありがとう