私のコードでは、すべてのローカルIISサイトを列挙し、サイトごとにポート443の証明書を検証しようとしています。
using( var sm = new ServerManager() ) {
foreach( var site in sm.Sites ) {
foreach( var binding in site.Bindings ) {
if( binding.EndPoint.Port == 443 ) {
var thumbprint = binding.CertificateHash;
var storeName = binding.CertificateStoreName;
//validation here...
}
}
}
}
このコードは、16進表現に変換するstoreName
存在"MY"
と存在のバイト配列を生成します。thumbprint
これで、「検証」部分は次のように機能します。
var store = new X509Store("MY");
store.Open(OpenFlags.ReadOnly);
var certs = store.Certificates;
//find and validate my cert
store.Close();
このコードは空のコレクションを生成します。しかし、私が変わると
var store = new X509Store("MY");
に
var store = new X509Store(StoreLocation.LocalMachine);
次に、コードは2つの証明書を持つコレクションを生成し、そのうちの1つには正しいフィンガープリントがあり、検証できます。
Binding
証明書ストア名を返すのに、その名前の証明書がストアに見つからないのはなぜですか?