如果这个问题很荒谬,我提前道歉。
我有一个在 Azure 中运行的 asmx 服务(HTTP - 无 SSL)。
我有一个 WPF 应用程序,它加载 X509Certificate2 并通过执行以下操作将其添加到请求中:
X509Certificate2 cert = new X509Certificate2("...");
webRequest.ClientCertificates.Add(cert);
在网络服务中,我通过
new X509Certificate2(this.Context.Request.ClientCertificate.Certificate)
然后我使用以下示例加载一个证书(我已经上传到 Azure 控制面板并添加到我的服务定义文件中):
var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
X509Certificate2Collection certs = store.Certificates.Find(X509FindType.FindBySubjectName, certName, true);
然后我通过执行以下操作进行验证:
clientCert.Thumbprint == certs[0].Thumbprint
现在不幸的是,我一做就得到一个异常(System.Security.Cryptography.CryptographicException: m_safeCertContext is an invalid handle)
Request.ClientCertificate.Certificate
所以我有几个问题。如何避免异常。这个答案指出我需要修改 IIS 设置,但我如何在 Azure 中做到这一点?
无论如何,这甚至是进行证书身份验证的正确方法吗?
谢谢!