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
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