web-dev-qa-db-ja.com

X.509証明書が「FindBySubjectName」で見つからない

WCFセキュリティとの残酷な戦いの後で、私は今、最終段階にあり、光を見ることができると思います。

サーバーにクライアント証明書がインストールされており、助言されているとおり、証明書ストアのTrusted Peopleフォルダーにあります。

しかし、証明書アプリケーション->サービスを読み取ってみると、次のエラーが発生します。

次の検索条件を使用してX.509証明書を見つけることができません:StoreName 'My'、StoreLocation 'CurrentUser'、FindType 'FindBySubjectName'、FindValue 'Forename Surname'。

「姓名」は私の証明書の「発行先」の一部です。私が見たすべてのチュートリアルでは、これは1つの単語にすぎません。これは問題ですか?証明書をこれらの2つの単語とスペースでCAから受け取りました。

誰かがこれに遭遇したことがありますが、私が露骨に間違っていることはありますか?

更新、証明書はここにあります:

enter image description here

更新:

それはさらに奇妙になります:

WebサーバーにVisual Studioをインストールし、次のコードを使用してThumbprintで証明書を取得しました。

var store = new X509Store(StoreName.TrustedPeople, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
var certs = store.Certificates.Find(X509FindType.FindByThumbprint, "71995159BFF803D25BFB691DEF7AF625D4EE6DFB", false);

これは実際には有効な結果を返します。この情報をサービス/クライアントのweb.configに入れても、エラーが発生します。

13
Chris Dixon

私は思います。証明書をTrusted Peopleにインストールし、店舗名myで検索しました

var store = new X509Store(StoreName.TrustedPeople, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
var certs = store.Certificates.Find(X509FindType.FindBySubjectDistinguishedName, certificateSubject, false);

また、2つの検索語FindBySubjectNameまたはFindBySubjectDistinguishedNameがあります。後者はキーワードとの関連性が高く、最初のキーワードは検索キーワードを使用して何でも検索します。

したがって、基本的には件名を探す必要があります。上記のコードを使用する場合、検索文字列は.. "CN = urs.Microsoft.com、O = DO_NOT_TRUST、OU = Created by http://fiddler2.com "

Certificate properties

13
paragy

https://i.stack.imgur.com/QtYvV.png

private X509Certificate2 GetCertificateFromStore()
        {
            var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
            store.Open(OpenFlags.ReadOnly);
            var certCollection = store.Certificates;
            var currentCerts = certCollection.Find(X509FindType.FindBySubjectDistinguishedName, "CN=sf.sandbox.mapshc.com", false);
                return currentCerts.Count == 0 ? null : currentCerts[0];
        }
1
Sagaya Amalraj