Ir al contenido


Foto

Acceso a una WebService con SSL


  • Por favor identifícate para responder
1 respuesta en este tema

#1 adebonis

adebonis

    Newbie

  • Miembros
  • Pip
  • 3 mensajes

Escrito 22 noviembre 2011 - 05:01

Buenos días.

Debo acceder a una Webservice con SSL y tengo un problema en el momento en el que envío una petición, pues me da el siguiente error:

"raised exception class ESOAPHTTPException with message "Error en el soporte de canal seguro - URL :htpps://lexnetpruebas.justicia.es"

En el componente THTTPRIO tengo puesto el siguiente codigo en el eveto onBeforePost del HTTPWebNode:



delphi
  1. procedure TForm1.HTTPRIO1HTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp;
  2.   Data: Pointer);
  3. var
  4.   Store: IStore;
  5.   Certs: iCertificates;
  6.   Cert: ICertificate2;
  7.   CertContext: ICertContext;
  8.   PCertContext: PCCERT_CONTEXT;
  9.   V: OleVariant;
  10.   i: Integer;
  11. begin
  12.   Store := CoStore.Create;
  13.   //Se repleEnvn todos los certificados
  14.   Store.Open(CAPICOM_CURRENT_USER_STORE, 'MY',CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);
  15.   //Se busca por el Hash thumbprint
  16.   V := 'DESCRIPCION CERTIFICADO';
  17.  
  18.   // Busco el certificado indicado
  19.   Certs := Store.Certificates as ICertificates2;
  20.   lsCertificados.Items.Clear;
  21.   if Certs.Count > 0 then begin
  22.     for i := 1 to Certs.Count do begin
  23.       // Captura el contexto del certificado
  24.       Cert := IInterface(Certs.Item[i]) as ICertificate2;
  25.       CertContext := Cert as ICertContext;
  26.       CertContext.Get_CertContext(Integer(PCertContext));
  27.       lsCertificados.Items.Add(Cert.GetInfo(CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME));
  28.       if (Cert.GetInfo(CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME) = V) then begin
  29.         // Pone el certificado para la comunicación SSL
  30.         if InternetSetOption(Data, INTERNET_OPTION_CLIENT_CERT_CONTEXT, PCertContext, Sizeof(CERT_CONTEXT)) = False then
  31.           ShowMessage( 'No se ha podido adjuntar el certificado digital para'+CHR(13)+CHR(10)+V );
  32.       end;
  33.     end;
  34.     lsCertificados.Update;
  35.   end;
  36. end;



Al ejecutar este evento no da ningún error, pero sí al enviar la petición de una servicio de la Web.

Utilizo Delphi 2007 y Windows 7

Si alguien tiene experiencia en este tema se lo agradecería.

Gracias.
Adolfo Bonis
Barcelona
  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.469 mensajes
  • LocationMéxico

Escrito 22 noviembre 2011 - 05:20

Pues yo tuve problemas para acceder a webservice seguros a través de Indy, utilicé curl y me fué mas fácil.

Dale una leída a este hilo,

http://www.delphiacc...54405/#msg54405

Salud OS
  • 0




IP.Board spam blocked by CleanTalk.