Ver Mensaje Individual
  #1  
Antiguo 22-11-2011
Avatar de adebonis
adebonis adebonis is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona
Posts: 145
Reputación: 22
adebonis Va por buen camino
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
Responder Con Cita