1. ホーム
  2. c#

[解決済み] C#でサムプリントから証明書を検索する方法

2023-03-22 18:15:55

質問

私はそのサムプリントによって証明書を見つけるために、このコードを使用しています。証明書は個人的な証明書ストアの証明書マネージャに存在しますが、このコードはその証明書を見つけることができません。

私はそれのどこで間違っているのか私に教えてください。

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string certThumbPrint = "‎‎fe14593dd66b2406c5269d742d04b6e1ab03adb1";
            X509Store certStore = new X509Store(StoreName.My, StoreLocation.CurrentUser);
            // Try to open the store.

            certStore.Open(OpenFlags.ReadOnly);
            // Find the certificate that matches the thumbprint.
            X509Certificate2Collection certCollection = certStore.Certificates.Find(
                X509FindType.FindByThumbprint, certThumbPrint, false);
            certStore.Close();

            // Check to see if our certificate was added to the collection. If no, 
            // throw an error, if yes, create a certificate using it.
            if (0 == certCollection.Count)
            {
                Console.WriteLine("Error: No certificate found containing thumbprint " );
            }
            Console.ReadLine();
}

どのように解決するのですか?

同じ問題でググっていたら、この質問に行き当たり、答えを見つけました。 ここで : 私のように、MMC からサムネイルをハイライトしてクリップボードにコピーして、quot;source" を取得した場合、ほぼ確実に、画面の最初に見えない文字が引っかかりますので。

string certThumbPrint = "fe14593dd66b2406c5269d742d04b6e1ab03adb1" とします。

は実際には

<ブロッククオート

string certThumbPrint = ". 不可視文字 fe14593dd66b2406c5269d742d04b6e1ab03adb1";

この見えない文字を削除するか (文字の横で backspace または delete キーを押しても何も起こらない場合は、その文字があることがわかります)、拇印を手で再入力すると、コードは正常に動作するはずです。Visual Studio に "show invisible characters" オプションがあればいいのですが......。