Foros del Web » Programación para mayores de 30 ;) » .NET »

Web Services y Certificados Digitales Cliente

Estas en el tema de Web Services y Certificados Digitales Cliente en el foro de .NET en Foros del Web. Buenas tardes, Tengo un problema en .net y es al utilizar los Web Services con certificados digitales. En una maquina tengo instalado el web service ...
  #1 (permalink)  
Antiguo 22/06/2005, 11:20
 
Fecha de Ingreso: junio-2005
Mensajes: 20
Antigüedad: 18 años, 10 meses
Puntos: 0
Web Services y Certificados Digitales Cliente

Buenas tardes,
Tengo un problema en .net y es al utilizar los Web Services con certificados digitales.

En una maquina tengo instalado el web service y desde el IIS le fué indicado
que requiera certificado del cliente.

Para ello, desde la maquina cliente (la que consume el ws) solicite el certificado.
Posteriormente desde el servidor, lo autoricé.

Desde el cliente, lo descargué e instalé. Desde browser acceder perfectamente al ws.
Dicho certificado lo exporto a archivo .CER en formato DER.

Desde la aplicacion .net cliente tengo el siguiente codigo:

Dim cert As System.Security.Cryptography.X509Certificates.X509 Certificate
Dim a As New WSP.Service1
Dim b As String

Try

cert = System.Security.Cryptography.X509Certificates.X509 Certificate.CreateFromCertFile("c:\cert.cer")


a.ClientCertificates.Add(cert)


b = a.Metodo(parametros)


Catch ex As Exception

End Try

Siempre cae en el catch con el error "Error (403) Access Forbidden".

Agradezco si ayuda si alguien se ha topado con este caso o si tiene idea por donde comenzar a revisar.
El codigo que expongo lo he sacado incluso de las paginas de microsoft, pero no funciona.
  #2 (permalink)  
Antiguo 23/06/2005, 01:37
 
Fecha de Ingreso: octubre-2004
Mensajes: 878
Antigüedad: 19 años, 6 meses
Puntos: 1
Yo estoy aprendiendo sobre el tema ahora mismo, y estoy probando con una web aspnet, y tambien me da error, pese a tener certificado. Te has basado en algun manual para hacer toda la configuracion? porque yo estoy buscando alguno sobre certificados de cliente y no veo mucho por internet.
  #3 (permalink)  
Antiguo 23/06/2005, 01:45
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Asegurate de que has agregado la referencia del servicio web como https://tuservicio.loquesea.asmx ya que si tienes que sean obligatorios en el webservice tambien ha de ser obligatorio el SSL
  #4 (permalink)  
Antiguo 23/06/2005, 07:58
 
Fecha de Ingreso: junio-2005
Mensajes: 20
Antigüedad: 18 años, 10 meses
Puntos: 0
En la referencia Web ya tengo indicado el https, es decir, fuí incrementando la seguridad poco a poco, primero probé con https (nada mas) y funciona. Luego agregué los certificados y ya no funcionó mas. Sin embargo vale aclarar nuevamente que desde browser (internetexplorer) funciona correctamente.
  #5 (permalink)  
Antiguo 23/06/2005, 08:08
 
Fecha de Ingreso: junio-2005
Mensajes: 20
Antigüedad: 18 años, 10 meses
Puntos: 0
Cita:
Iniciado por wakewakeup
Yo estoy aprendiendo sobre el tema ahora mismo, y estoy probando con una web aspnet, y tambien me da error, pese a tener certificado. Te has basado en algun manual para hacer toda la configuracion? porque yo estoy buscando alguno sobre certificados de cliente y no veo mucho por internet.
Te cuento que para instalar los certificados en servidor me base en el siguiente link
http://www2.sharesafe.net/sharesafe/TuturialPKI1.asp. Este link no es exactamente lo que pedis, pero es lo que tengo.

Lo que sí tienes razón es que no hay mucha información sobre certificados clientes y como manejarlos.
  #6 (permalink)  
Antiguo 23/06/2005, 08:10
 
Fecha de Ingreso: junio-2005
Mensajes: 20
Antigüedad: 18 años, 10 meses
Puntos: 0
Cita:
Iniciado por jmujica
Te cuento que para instalar los certificados en servidor me base en el siguiente link
http://www2.sharesafe.net/sharesafe/TuturialPKI1.asp. Este link no es exactamente lo que pedis, pero es lo que tengo.

Lo que sí tienes razón es que no hay mucha información sobre certificados clientes y como manejarlos.
Perdón, en cuanto a la configuración, tengo un pequeño documento armado, que siquieres te lo puedo enviar, a tu casilla de correo, pues aqui no puedo adjuntar documentos.
  #7 (permalink)  
Antiguo 23/06/2005, 08:33
 
Fecha de Ingreso: octubre-2004
Mensajes: 878
Antigüedad: 19 años, 6 meses
Puntos: 1
Ok enviamelo a alainc @ euskalnet . net
muchas graciasss
  #8 (permalink)  
Antiguo 28/06/2005, 10:25
 
Fecha de Ingreso: junio-2005
Mensajes: 20
Antigüedad: 18 años, 10 meses
Puntos: 0
Gente, no se olviden de mi. =)

Alguna vez trabajaron con ello? Como lo hicieron?
  #9 (permalink)  
Antiguo 28/06/2005, 10:56
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Perdona tio, haz una cosa, antes de agregar la referencia, dale en el IIS del server, a que Acepte Certificados Cliente (no que los requiere), agrega la referencia (que sí que te debería dejar así) haz tu programación para utilizar el mismo. Y una vez tengas todo y funcione (utilizando un certificado), requierelos e intenta ejecutar tu codigo de utilización,


¿Entiendes lo que te quiero decir???
  #10 (permalink)  
Antiguo 28/06/2005, 11:35
 
Fecha de Ingreso: junio-2005
Mensajes: 20
Antigüedad: 18 años, 10 meses
Puntos: 0
Te entiendo perfectamente, y la respuesta es sí, funciona sin requerirlos pero aceptandolos. Sin embargo, en el metodo que llamo intento recuperar el certificado (a los efectos de saber si llega o no) y no lo levanta, es decir, es como si no le llegara, pero el metodo funciona.

Si cambio la configuracion del IIS para requerirlos, ahi ya no funciona.

El codigo que utilizo es el expuesto inicialmente en el tema. La verdad es que ya no se como hacerlo pues todo el mundo dice que deberia funcionar asi, pero no funciona. =(.
  #11 (permalink)  
Antiguo 29/06/2005, 00:46
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Tienes razón acabo de hacer algunas pruebas con la obligación de requerir y me salta la excepción que comentas, es muy raro, no se. Voy a investigar el asunto, mientras tanto sólo te puedo aconsejar, que sea tu code el que obligue a mostrar un certificado cliente, en vez de que sea el IIS, éste ponlo para que los acepte simplemente.

Si encuentro algo, te lo comento.
  #12 (permalink)  
Antiguo 29/06/2005, 04:53
 
Fecha de Ingreso: octubre-2004
Mensajes: 878
Antigüedad: 19 años, 6 meses
Puntos: 1
Buenas
acabo de hacerme un programilla de prueba para probarlo. En el webservice tengo este codigo c#
Código:
HttpClientCertificate cert = Context.Request.ClientCertificate;
if (cert.IsPresent)
He agregado el certificado del CA en el IE y desde el IE me entraba bien. Pero llamando al web service desde una aplicacion Windows Forms, el certificado no llegaba, y el if daba false. Creo que esto es lo que te pasaba a ti.
Lo he solucionado metiendo en los certificados de pc, atraves de mmc en Autoridades raiz el certificado del CA mio. Igual es lo que te pasa a ti.

Supongo que tu tienes tu propio CA para crearte certificados tambie no?
  #13 (permalink)  
Antiguo 29/06/2005, 10:43
 
Fecha de Ingreso: junio-2005
Mensajes: 20
Antigüedad: 18 años, 10 meses
Puntos: 0
Señores, acabo de resolver este fastidioso tema y aunque un poco MUY elaborada y rebuscada (para mi gusto) he podido resolver el tema.

Si bien ya la habia intentado implementar, no me habia funcionado, pero ahora intentando nuevamente y tomandome el tema con soda, lo logré hacer andar.

Les paso donde esta implementada la solucion de microsoft.

http://www.microsoft.com/Spanish/msd...l/13_HowTo.asp
  #14 (permalink)  
Antiguo 30/06/2005, 01:16
 
Fecha de Ingreso: octubre-2004
Mensajes: 878
Antigüedad: 19 años, 6 meses
Puntos: 1
No entiendo muy bien que es toda esa paranoia del componente revisado, ni que ventajas tiene, pero a mi me funciona a tu estilo inicial sin tanto lio...
  #15 (permalink)  
Antiguo 30/06/2005, 09:05
 
Fecha de Ingreso: junio-2005
Mensajes: 20
Antigüedad: 18 años, 10 meses
Puntos: 0
Estoy de acuerdo de que es muy "engorroso" hacer todo eso, es mas, no lo considero lindo sino que es la solucion que brinda microsoft. jejeje

Para mí lo ideal sería el codigo que indiqué al principio del tema, sin embargo no me funciona. Sin embargo, si lo has logrado hacer andar de manera mas simple, te agradezco lo expongas. Saludos.
  #16 (permalink)  
Antiguo 30/06/2005, 09:36
 
Fecha de Ingreso: octubre-2004
Mensajes: 878
Antigüedad: 19 años, 6 meses
Puntos: 1
Pues creo que lo he hecho como lo hacias tu en un principio, pero en c#:

Desde aplicacion windows forms llamo al web service:
Código:
	System.Security.Cryptography.X509Certificates.X509Certificate cert;
cert = System.Security.Cryptography.X509Certificates.X509Certificate.CreateFromCertFile(@"c:\certcliente.cer");
misw.Prueba proxy = new misw.Prueba();
proxy.ClientCertificates.Add(cert);
lblSuma.Text = proxy.suma(1,b++).ToString();

Servicio web
Código:
[WebMethod]
public int suma(int a,int b)
{
				
HttpClientCertificate cert = Context.Request.ClientCertificate;
if (cert.IsPresent)
	{
	return a+b;
	}
return 0;
}
A mi me pasaba lo que a ti, pero agregando el certificado del CA por mmc me distingue bien con certificado y sin certificado.
  #17 (permalink)  
Antiguo 30/06/2005, 10:14
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
A mi eso también me funciona, siempre y cuando el certificado no sea requerido, es decir, si es aceptado. Y controlo por código que sea obligatorio. Pero no se, ahora es que no estoy con eso, luego me pondré ha hacer unas pruebecillas con el mmc para los certs cliente.
  #18 (permalink)  
Antiguo 01/07/2005, 01:12
 
Fecha de Ingreso: octubre-2004
Mensajes: 878
Antigüedad: 19 años, 6 meses
Puntos: 1
A mi tambien me funciona con requerido
  #19 (permalink)  
Antiguo 28/04/2009, 04:41
 
Fecha de Ingreso: abril-2009
Mensajes: 1
Antigüedad: 15 años
Puntos: 0
Respuesta: Web Services y Certificados Digitales Cliente

Hola.

He estado creando un WebService con Certificado, tu forum me salio buscando por internet, yo tambien pasé por lo mismo, se debe a que antes de llamar tu webservice en la aplicación cliente, no le estas pasando el certificado, se lo tienes que pasar siempre antes de llamarlo, certificate si llamas el webservice en mas ocasiones y le envias el certificado, o que el certificado que le envias no es null:

En el cliente:

1 - tu_servicio.ClientCertificates.Add(cert);

2 - llamada al webservice (funcion).

En el Webservice lo recojes:

HttpClientCertificate cert;
cert = Context.Request.ClientCertificate;


Es un error interno del IIS, que configurando el webservice con 'Requerir Canal Seguro' y 'Requerir certificados del cliente' te obliga siempre a pasarle un certificado, si no se lo envias pues no te permite utilizarlo y te da el error:
'HTTP 403: Access Forbidden'.


Saludos.

Última edición por Geca; 28/04/2009 a las 04:46
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:47.