Ask Learn
Preview
Please sign in to use this experience.
Sign inThis browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
In an Windows Azure application when both client and service are running in two different Windows Azure virtual machines, I found some strange behavior.
I found that the following code which was using client certificate to authenticate with WCF service was keep failing:
certStore.Certificates.Find(X509FindType.FindByThumbprint, Certificate_ThumbPrint, true);
Above code fails to find the certificate even though certificate is available which I verify in the Azure VM under Certificate MMC.
I was not able to get a definitive answer why Find Certificate is not working in Azure VM, due to unsupported scenario or something else. To expedite the solution I used the following approach in my Code:
The code snippet look like as below:
public static X509Certificate2 GetExpectedCertificate(CertStoreName certStoreName, StoreLocation certStoreLocation, string certThumbprint)
{
X509Store store = new X509Store(certStoreName.ToString(), certStoreLocation);
try
{
store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection certCollection = new X509Certificate2Collection();
foreach (X509Certificate2 cert in store.Certificates)
{
if(cert.Thumbprint.Equals(certThumbprint))
certCollection.Add(cert);
}
if (certCollection.Count == 0)
{
throw new ArgumentException(string.Format("Unable to find the certificate – Certificate Store Location ={0} Certificate Store Name={1} Certificate Thumbprint={2}", certStoreLocation, certStoreName, certThumbprint));
}
}
finally
{
store.Close();
}
}
Please sign in to use this experience.
Sign in