Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Acceso a una WebService con SSL (https://www.clubdelphi.com/foros/showthread.php?t=76728)

adebonis 22-11-2011 20:59:19

Acceso a una WebService con SSL
 
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:

Código Delphi [-]
procedure TForm1.HTTPRIO1HTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp;
  Data: Pointer);
var
  Store: IStore;
  Certs: iCertificates;
  Cert: ICertificate2;
  CertContext: ICertContext;
  PCertContext: PCCERT_CONTEXT;
  V: OleVariant;
  i: Integer;
begin
  Store := CoStore.Create;
  //Se repleEnvn todos los certificados
  Store.Open(CAPICOM_CURRENT_USER_STORE, 'MY',CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);
  //Se busca por el Hash thumbprint
  V := 'DESCRIPCION CERTIFICADO';

  // Busco el certificado indicado
  Certs := Store.Certificates as ICertificates2;
  lsCertificados.Items.Clear;
  if Certs.Count > 0 then begin
    for i := 1 to Certs.Count do begin
      // Captura el contexto del certificado
      Cert := IInterface(Certs.Item[i]) as ICertificate2;
      CertContext := Cert as ICertContext;
      CertContext.Get_CertContext(Integer(PCertContext));
      lsCertificados.Items.Add(Cert.GetInfo(CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME));
      if (Cert.GetInfo(CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME) = V) then begin
        // Pone el certificado para la comunicación SSL
        if InternetSetOption(Data, INTERNET_OPTION_CLIENT_CERT_CONTEXT, PCertContext, Sizeof(CERT_CONTEXT)) = False then
          ShowMessage( 'No se ha podido adjuntar el certificado digital para'+CHR(13)+CHR(10)+V );
      end;
    end;
    lsCertificados.Update;
  end;
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


La franja horaria es GMT +2. Ahora son las 17:45:41.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi