9

サーバーに特定の証明書がインストールされています。その証明書には有効な日付があり、Windows 証明書 MMC スナップインで完全に有効であるように見えます。

しかし、HttpRequest で使用するために証明書を読み取ろうとすると、見つかりません。使用されるコードは次のとおりです。

    X509Store store = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
    store.Open(OpenFlags.ReadOnly); X509Certificate2Collection col =
    store.Certificates.Find(X509FindType.FindBySerialNumber, "xxx", true);

xxxシリアル番号です。引数trueは「有効な証明書のみ」を意味します。返されたコレクションは空です。

奇妙なことにfalse、無効な証明書が受け入れられることを示す を渡すと、コレクションには 1 つの要素 (指定されたシリアル番号を持つ証明書) が含まれます。

結論として、証明書は有効に見えますが、Findメソッドはそれを無効として扱います! なんで?

4

3 に答える 3

8

X509Chainクラスを使用して証明書チェーンを検証してみてください。これにより、証明書が有効と見なされない理由を正確に知ることができます。

ericksonが提案したように、X509Storeにはチェーン内のCAからの信頼できる証明書がない可能性があります。OpenSSLまたは別のツールを使用して独自の自己署名CAを生成した場合は、そのCAの公開証明書をX509Storeに追加する必要があります。

于 2008-09-19T00:45:01.980 に答える
6

発行者の証明書は X509Store に存在しますか? 証明書は、信頼できる人によって署名されている場合にのみ有効です。

これは本物の CA からの証明書ですか、それとも自分で署名したものですか? 開発者がよく使用する OpenSSL などの証明書署名ツールは、デフォルトではいくつかの重要な拡張機能を追加しません。

于 2008-09-19T00:16:09.707 に答える
3

x509 証明書は特定のユーザーに関連付けられていると思います。コード内で、作成されたユーザーとは別のユーザーとしてアクセスしているため、無効になる可能性がありますか?

于 2008-09-19T00:05:08.830 に答える