Déjame explicarte mi situación.
Creé un certificado autofirmado y lo instalé en la sección Autoridades de certificación de raíz de confianza en MMC.
Luego creé dos certificados usando el certificado autofirmado:
- Un certificado con el nombre del sujeto "localhost"
- Un certificado con el nombre del sujeto "test.com"
Luego instalé ambos certificados en la sección Personal en MMC.
Luego implementé un servicio web como HTTPS (SSL con aceptar certificados de cliente) en IIS. El certificado utilizado para implementar el servicio web es el que tiene el nombre del sujeto "localhost".
Ahora, tengo un cliente que desea conectarse al servicio web. He añadido con éxito una referencia web al servicio. Este es el código:
ClientServices web_service = new ClientServices();
X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection col = store.Certificates.Find(X509FindType.FindBySubjectName, "test.com", true);
if (col.Count == 1)
{
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls;
web_service.ClientCertificates.Add(col[0]);
try
{
string hello = web_service.HelloWorld();
int add = web_service.add(4, 31);
int sub = web_service.subtract(30, 10);
Console.WriteLine(hello);
Console.WriteLine(add);
Console.WriteLine(sub);
}
catch (WebException e)
{
Console.WriteLine(e.Message.ToString());
}
}
else
{
Console.WriteLine("The certificate was not found!");
}
Console.ReadKey();
Como puede ver, estoy enviando el certificado "test.com" junto con la solicitud del servicio web. Desafortunadamente, estoy recibiendo esta excepción:
The request was aborted: Could not create SSL/TLS secure channel
¿Cómo puedo resolver este problema? Ya he perdido 3 horas en este tema. Por favor, ayúdame.