問題タブ [x509certificate2]
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# - バイト配列を X.509 証明書に変換する
Base64でエンコードされた文字列を受け取り、それをバイト配列に変換し、それを使用してX.509証明書を作成し、RSA暗号化のモジュラスと指数を取得するJavaコードを.NETに移植しようとしています。
これは、変換しようとしている Java コードです。
これを .NET に変換する最善の方法を見つけようとしています。これまでのところ、私はこれを思いつきました:
私にはそれがうまくいくように見えますが、Javaコードからベース64でエンコードされた文字列を使用してX509証明書を生成すると、 CryptographicExceptionがスローされます。私が受け取る正確なメッセージは次のとおりです。
要求されたオブジェクトが見つかりません。
Java の X.509 実装は .NET と互換性がないだけですか、それとも Java から .NET への変換に何か問題がありますか?
それとも、この場合、Java から .NET への変換がまったくないのでしょうか?
openssl - OpenSSL を使用してプログラムで .PEM 証明書を .PFX に変換する
PKCS12 ファイル (PFX) に変換したい.PEM ファイルがあり、次のopenssl
コマンドを使用して簡単に変換できることがわかっています。
これは素晴らしいことですが、 OpenSSL呼び出しを使用してプログラムでこれを行いたいと考えています。残念ながら、OpenSSL のドキュメントは理想的とは言えません。
私は他のライブラリを使用してこれを行うことを検討しました:
.NET の使用: PEM ファイルから X509Certificate2 オブジェクトを作成できますが、これは最初の証明書のみを取得し、PEM ファイル内の中間 CA を無視します。
Mentalis.orgセキュリティ ライブラリの使用: PEM ファイルから証明書オブジェクトを作成できますが、ドキュメントには次のように記載されています。
備考 この実装は、PEM ファイルからの証明書のみを読み取ります。秘密鍵が存在する場合、証明書ファイルから秘密鍵を読み取りません。
だから、それは私を助けません。その秘密鍵も必要です。
基本的に、PEM>PFX に移行するための OpenSSL コマンド ライン ツール操作をコードで再作成する必要があります。
これを行う簡単な方法はありますか?
c# - PKCS#12バイト配列からX509Certificate2を構築すると、CryptographicException( "システムは指定されたファイルを見つけることができません。")をどのようにスローできますか?
X509Certificate2
バイト配列のPKCS#12 BLOBからを構築しようとしていますが、かなり不可解なエラーが発生します。このコードは、WindowsXPの管理者権限を持つデスクトップアプリケーションで実行されています。
_LoadCertFromBlob
スタックトレースは次のとおりですが、がマークされているため、トラブルシューティングしようとして迷子になりました[MethodImpl(MethodImplOptions.InternalCall)]
。
編集: blobは、RSA秘密鍵と証明書(自己署名または最近CAに登録されたもの)を含むC#用にBouncyCastleによって生成された真のPKCS#12です-私がやろうとしているのは、秘密鍵と証明書を変換することですBouncyCastleライブラリからSystem.Security.Cryptographyライブラリに、一方からエクスポートしてもう一方にインポートすることにより。このコードは、試されたシステムの大部分で機能します。そのコンストラクターからスローされた特定のエラーを見たことがありません。それはその1つの箱のある種の環境の奇妙さかもしれません。
編集2:エラーは別の都市の別の環境で発生しており、ローカルで再現できないため、壊れたXPインストールにチョークで書く必要があるかもしれません。
しかし、あなたが尋ねたので、ここに問題の断片があります。このコードは、BouncyCastle表現の秘密鍵と証明書を取得し、同じ識別名の以前の証明書を個人鍵ストアから削除し、新しい秘密鍵と証明書を中間PKCS#12ブロブを介して個人鍵ストアにインポートします。
c# - 証明書のキー サイズを取得する方法
X.509 証明書があり、その鍵のサイズ (ビット単位) を取得する必要があります (例: 1024 2048 など)。
public-key-encryption - SerialNumberまたは公開鍵を使用したX509証明書の検証
X509Certificateの検証について誰かがアドバイスを提供できますか?証明書が信頼されたルートによって署名されているかどうかをすでに確認していますが、証明書が既知の関係者に発行されていることも確認したいと思います。
これに使用するのに最適なプロパティは何ですか?私はSerialNumberまたはPublicKeyに沿って考えていますが、どちらの意味も完全には理解していません。公開鍵は再発行された証明書を超えて存続すると思いますが、SerialNumberは特定の日に発行された特定の証明書に制限されていますか?
誰かが情報に基づいたアドバイスを提供できますか?
編集:証明書の指紋がこれを達成するための典型的な方法である可能性があるようです。
c# - openssl で作成された自己署名証明書を X509Certificate2 (Mono) にインポートする: 暗号化できますが、復号化できません
私は Fedora 14、MonoDevelop 2.4、Mono 2.6.7 を使用しています。したがって、自己署名証明書を生成しました:
次に、C# で暗号化と復号化を試しています。.crt ファイルを選択しています。問題は、X509Certificate2
作成中の に秘密鍵がないことです! したがって、暗号化操作はうまくいき、爆弾を解読します。
私はおそらくopensslコマンドを間違って実行しています。それとも、X509Certificate2
オブジェクトを作成する際の微妙な点ですか?
c# - デジタル署名によるサーバーの認証
デジタル署名で否認防止と整合性がどのように達成されるかは理解していますが、まだ把握していないのは認証です。
私は C# でクライアント サーバー アプリケーションを開発しています。これは、デジタル証明書とデジタル署名による認証が可能である必要があります。(SignedCms.CheckSignature() を使用して) 署名の有効性と整合性をチェックする方法は知っていますが、関連する部分をどのように認証するのでしょうか?
例えば:
- クライアントはサーバーにデジタル署名を要求します。
- クライアントは署名を受け取り、それを検証します。
- 検証が成功した場合は、続行します。
クライアントは中間者攻撃の被害者となり、ステップ 2 で有効な署名を受け取る可能性があります。検証は成功しますが、クライアントは適切なサーバーと通信していません。
私は何が欠けていますか?
c# - 証明書を BASE-64 でエンコードされた .cer としてエクスポートする
Windowsからエクスポートするのと同じように、秘密鍵なしで証明書をBASE-64でエンコードされたファイルとしてエクスポートしようとしています。Windows からエクスポートすると、メモ帳で .cer ファイルを開くことができます。
以下を試してメモ帳で開くと、バイナリデータが取得されます...読み取れないと思います。
「X509KeyStorageFlags.Exportable」を削除しようとしましたが、うまくいきません。
編集 - 試しました
それはうまくいくようですが、「-----BEGIN CERTIFICATE-----」と「-----END CERTIFICATE-----」がありません。
iis - HttpWebRequestクライアント証明書がIISで機能しない
IISでホストされるWCFアプリケーションを作成しようとしています。このWCFアプリは、サードパーティのWebサイトを呼び出してCSVファイルをダウンロードします。サードパーティのWebサイトは、WCF呼び出しを認証するための証明書を提供しています。私の開発環境は、
-OS:Windows 2008R2 -ツール:Visual Studio 2010(.Net 4.x)
開発中、HttpWebRequestを使用して呼び出しを行うのに問題はありませんが、IISに同じものを展開した後、IISを開発サーバーとして使用してVisual Studio 2010を実行した場合でも、次のエラーが発生します。
「\r\n証明書情報がログインと一致しません。接続が拒否されました。」
インストール中の証明書にはパスワードが必要です。「マイユーザーアカウント」と「コンピューターアカウント」にインストールしました。IEにもインストールされています。すべてのインストールで、「信頼されたルート証明機関」にインストールされます。しかし、それでもエラーメッセージが表示されます。以下にコードスニペットを示します。
誰かが私に情報を提供してくれるなら、いいでしょう、もう一度ありがとう、
.net-3.5 - .NET3.5-エクスポートX509Certificate2PublicKey-要求されたオブジェクトが見つかりません
X509Certificate2
次のコードを使用して、証明書の公開鍵をエクスポートしようとしています。
最後の行を実行すると、次の例外がスローされます。
誰かがこれを解決する方法を知っていますか?
注:上記のコードサンプルは「機能的」ですが、疑似コードです。実際には、あるアプリケーションで証明書をエクスポートしてから、デジタル署名の目的で別のアプリケーションに送信しています(したがって、公開鍵のみを送信します)