の違いは何ですかX509Certificate2、X509Certificate。います。
-
19-09-2019 - |
質問
はどう違うのはない。
解決
の x509Certificate 導入された。NET v1.0/1.1とした比較的限に可能です。使用できに関する情報を取得するため、既存の証明書の有効期限は、発行体ます。また簡単な方法は/業務(読certからディスク).
の x509Certificate2 はx509Certificateサブクラスを追加可能です。
- では実際のX509証明書。
- 新しくできた。NET Framework.phpがv2で増えたファイルです。0になります。
- このクラスセ、V2、V3物件(権限の鍵識別子、鍵の使用).
- 対応して読み込み証明書証明書店です。
他のヒント
完全期すために、ここでは<のhref = 『http://www.grimes.nildram.co.uk/workshops/secWSThirteen.htm#2_0_x509Cert』のrel = 『noreferrer』の関連セクションのコピーです
:>サイトは、サイトがもはやアップとだけ長い-方法を知っている人のためのGoogleのキャッシュにないかもしれないため、@のdommerの答えにをするためにリンクよりフレームワークのバージョン1.1が持っていた非常に少ない他 あなたが証明書を操作することを可能にするのX509Certificateクラス。に 実際に、バージョン1.1のX509Certificateクラスは、基本的なサポートを与えた。それだけ 有効なようX509バージョン1フィールドへのアクセスを(与え、 日付、件名と公開鍵)ではなく、バージョン2つのフィールド(等に有効 キーのような権威の主要な識別子)もバージョン3分野( 使用法)。証明書から証明書をロードするためのサポートはありませんでした 店舗、またそれは、証明書にアクセスするための施設を持っています 失効リストまたは証明書信頼リスト。マイクロソフトは、上の改善しました 拡張Webサービスの機能強化(WSE)ツールキットを使用してこの 証明書のクラスおよび証明書ストアにアクセスするためのクラスを提供します。 これらのクラスは現在、.NET 3.0 / 2.0フレームワークライブラリで見つけることができます。
最初の大きな変化は、X509Certificate2と呼ばれる新しいクラスがあります X509Certificateに由来します。 X509にアクセスする方法 証明書フィールドは廃止されており、今のクラスはあり これらのフィールドにアクセスするためのプロパティ。また、証明書がある場合 関連する秘密鍵は、クラスは、このキーへのアクセスを提供します。 民間の場合は、パスワードを提供することを可能にする方法があります。 キーは1で保護されています。パスワードはSecureStringを通過します 確認時にオブジェクトことになり、特殊なタイプであるパラメータ もはやそれはとても上書きされる占有メモリを使用されていません パスワードは、マシン上の別のプロセスで読み取ることができないということ。 セキュリティで保護された文字列と保護されたデータの他の形式はで説明します 後のセクションます。
X509Certificate2がX509Certificateに由来しているので、それはあなたということを意味 静的メソッドのCreateFromeCertFileを呼び出すことができますし、 X509Certificate2クラスを通じてCreateFromSignedFile。しかしながら、 これらのメソッドは、X509Certificateオブジェクトを返し、あなたがダウンすることはできません X509Certificate2オブジェクトにこれをキャスト。 X509Certificateクラスがあり バージョン3.0 / 2.0で改善され:それはアクセスするプロパティを提供 X509のフィールドの一部。それはへのインポートおよびエクスポートする方法を提供します バイト配列からオブジェクトを初期化するか、からバイト配列を生成します 証明書とそのオブジェクトを作成するコンストラクタを持っています ファイル(ASN.1のDER)からとバイト配列から。興味深いことに、 X509Certificate2クラスは、作成することができますコンストラクタを持ちます X509CertificateオブジェクトからX509Certificate2オブジェクト。ご了承ください X509CertificateオブジェクトはX509v1フィールドを表示することができますが、 書X509v3証明書から作成され、あなたが作成した場合することができます あなたがなりますX509CertificateオブジェクトからX509Certificate2オブジェクト 書X509v3のフィールドにアクセスすることができます。
このような何かをしようと、 "X509Certificate2" に "のX509Certificate" からX.509証明書を変換するには:
X509Certificate X509 = sslStream.RemoteCertificate;
X509Certificate2 X5092 = new X509Certificate2(X509);
証明書を読んで、もう1つは、単純にX509Certificate2を作成し、それのコンストラクタでのX509Certificateを渡す認証するために、これを使用したいという人のために。
署名済みアセンブリ(EXE)のコードは、このようなコードになり、私は簡単にするためにエラー検証を省略します。
Module m = Assembly.GetEntryAssembly().GetModules()[0];
using (var cert = m.GetSignerCertificate())
using (var cert2 = new X509Certificate2(cert))
{
var _clientHandler = new HttpClientHandler();
_clientHandler.ClientCertificates.Add(cert2);
_clientHandler.ClientCertificateOptions = ClientCertificateOption.Manual;
var myModel = new Dictionary<string, string>
{
{ "property1","value" },
{ "property2","value" },
};
using (var content = new FormUrlEncodedContent(myModel))
using (var _client = new HttpClient(_clientHandler))
using (HttpResponseMessage response = _client.PostAsync($"{url}/{controler}/{action}", content).Result)
{
response.EnsureSuccessStatusCode();
string jsonString = response.Content.ReadAsStringAsync().Result;
var json = new Newtonsoft.Json.JsonSerializer();
var myClass = JsonConvert.DeserializeObject<MyClass>(json);
}
}
もちろん、あなたしているクラスは、MyClassのがありますが、Webサービスから期待するいくつかのビジネスオブジェクトと呼ばれていません。
あなたが満たされた必要プロパティ&値を送信することによって、あなたのアクションにクラスを送信することができます。あなたは今では同じよう要求証明書を読むことによって、あなたが受信した要求が有効なモバイルまたはWindowsクライアントからのものであることを保証することができます:
public class MyController : ApiController
{
public IHttpActionResult Get()
{
X509Certificate2 clientCertInRequest = Request.HttpContext.Connection.ClientCertificate;
if (!clientCertInRequest.Verify() || !AllowedCerialNumbers(clientCertInRequest.SerialNumber))
{
Response.StatusCode = 404;
return null;
}
//your code
}
}
クライアント証明書を受け入れるようにWebサーバを設定することでどのような残っている...あなたはすべての新しいフォーマットから来プロパティについて読むことができますし、公開Webサービス、ほとんどがちょうど認可されているISNのようにしてくださいに失敗何か」を確保していますもう十分トン良い(それが今までだった場合)