Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Colaboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-12-2021
antoine0 antoine0 is offline
Miembro
 
Registrado: oct 2021
Posts: 260
Poder: 5
antoine0 Va por buen camino
Cita:
Empezado por elguille Ver Mensaje
... mi cliente tiene windows 7 ...
Buenas:

Con Windows 7 la primera cosa que se tiene que hacer es comprobar si el cliente ha actualizado correctamente su sistema para usar TLS 1.2.
Es un proceso un poco complicado (hay que actualizar a la última; luego registrar la posibilidad de usar TLS 1.2 ya que por defecto este sistema no sabe siquiera que se puede usar. Luego eventualmente actualizar dotNet, y van por separado 3.5 y 4.x. Por supuesto todo esto como Administrador.)

Lo menciono porqué en el aviso de la AEAT que se ha citado, dicen que han invalido TLS 1.0 y 1.1, entonces TLS 1.2 pasa a ser requerido, y es novedad.
Responder Con Cita
  #2  
Antiguo 16-12-2021
Noe277 Noe277 is offline
Miembro
 
Registrado: jul 2017
Posts: 163
Poder: 10
Noe277 Va por buen camino
Aranceles

Hola buenas,

Tengo una duda los aranceles como se encuadran en el SII.
Responder Con Cita
  #3  
Antiguo 12-01-2022
razorxxx razorxxx is offline
Miembro
 
Registrado: jul 2015
Posts: 202
Poder: 12
razorxxx Va por buen camino
Buenas a todos.

¿Alguien que tenga Delphi 10.3 en adelante ha conseguido solucionar el problema del método HTTPRIOBeforePost? Desde que se actualizó la función, ahora no puede conectar al WebService, dando el error "Error, Internet SSL certificate".

¿Alguna ayuda? ¿Alguien que le funcione desde la 10.3 en adelante podría publicar por aquí su método HTTPRIOBeforePost?

Gracias de antemano.
Responder Con Cita
  #4  
Antiguo 13-01-2022
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.235
Poder: 24
keys Va por buen camino
Cita:
Empezado por razorxxx Ver Mensaje
Buenas a todos.

¿Alguien que tenga Delphi 10.3 en adelante ha conseguido solucionar el problema del método HTTPRIOBeforePost? Desde que se actualizó la función, ahora no puede conectar al WebService, dando el error "Error, Internet SSL certificate".

¿Alguna ayuda? ¿Alguien que le funcione desde la 10.3 en adelante podría publicar por aquí su método HTTPRIOBeforePost?

Gracias de antemano.
No se a que te refieres, nosotros utilizamos la 10.2 update 3 (Tokio) y no tenemos ningún problema. Ese error sule dar por el TLS.
Responder Con Cita
  #5  
Antiguo 13-01-2022
razorxxx razorxxx is offline
Miembro
 
Registrado: jul 2015
Posts: 202
Poder: 12
razorxxx Va por buen camino
Cita:
Empezado por keys Ver Mensaje
No se a que te refieres, nosotros utilizamos la 10.2 update 3 (Tokio) y no tenemos ningún problema. Ese error sule dar por el TLS.
Me refiero a que con la 10.2 me funcionaba perfectamente, y al compilarlo con la 10.3 el procedimiento HTTPRIOBeforePost cambió, y ahora da error en las peticiones al WebService.

Desconozco como solucionar este problema, y sé que le pasa a más gente. A ver si alguien con la versión Rio, Sydney o Alexandria ha conseguido hacerlo funcionar.
Responder Con Cita
  #6  
Antiguo 21-01-2022
razorxxx razorxxx is offline
Miembro
 
Registrado: jul 2015
Posts: 202
Poder: 12
razorxxx Va por buen camino
Dado que aún no he conseguido hacer funcionar el procedimiento OnBeforePost del HTTPRIO en Delphi Rio, estoy tratando de prescindir de ese método, y asignando (justo antes de la petición al WebService) la llamada al HTTPRIO1.HTTPWebNode.ClientCertificate.SerialNum, usando la función
Código:
function BUSCAR_CERTIFICADO(Nombre_Certificado: String): string;
que ya han mencionado en un post anterior.

Sin embargo, cuando hago
Código:
HTTPRIO1.HTTPWebNode.ClientCertificate.SerialNum := Buscar_Certificado(Cert.Text)
, me devuelve una cadena vacía. Según me he estado informando, esto solo sirve para cuando el certificado está en el almacén de certificados del equipo, pero no para cuando trabajamos con un fichero PFX/P12.

¿Alguien tiene alguna idea acerca de cargar un .pfx o .p12 en un objeto THTTPRIO, usando HTTPWebNode.ClientCertificate y prescindiendo de la llamada al OnBeforePost?
Responder Con Cita
  #7  
Antiguo 02-02-2022
nuevo1234 nuevo1234 is offline
Miembro
 
Registrado: abr 2017
Posts: 111
Poder: 10
nuevo1234 Va por buen camino
SII: Publicación nueva versión de los ficheros WSDL de los servicios web del SII

Hola,

Han publicado esto. Parece que cambian las URLs del entorno de Pruebas. Aunque los servicios web que actualmente están disponibles en www7.aeat.es seguirán estando disponibles hasta el 21 de marzo.

SII: Publicación nueva versión de los ficheros WSDL de los servicios web del SII

El próximo día 21 de marzo dejará de estar disponible el acceso a realizar pruebas de los servicios publicados en los servidores www6.aeat.es y www7.aeat.es. Los actuales servidores de pruebas en Internet serán sustituidos por una nueva configuración de servidores

Por esta razón, se han cambiado los endpoint de los entornos de pruebas en los ficheros WSDL de los servicios web del SII. Los endpoint de los entornos de pruebas www7.aeat.es se cambian a prewww1.aeat.es. Los servicios web que actualmente están disponibles en www7.aeat.es seguirán estando disponibles hasta el 21 de marzo.
Responder Con Cita
  #8  
Antiguo 27-06-2024
razorxxx razorxxx is offline
Miembro
 
Registrado: jul 2015
Posts: 202
Poder: 12
razorxxx Va por buen camino
Solución al OnBeforePost en Delphi 10.3 y superiores

Cita:
Empezado por razorxxx Ver Mensaje
Dado que aún no he conseguido hacer funcionar el procedimiento OnBeforePost del HTTPRIO en Delphi Rio, estoy tratando de prescindir de ese método, y asignando (justo antes de la petición al WebService) la llamada al HTTPRIO1.HTTPWebNode.ClientCertificate.SerialNum, usando la función
Código:
function BUSCAR_CERTIFICADO(Nombre_Certificado: String): string;
que ya han mencionado en un post anterior.

Sin embargo, cuando hago
Código:
HTTPRIO1.HTTPWebNode.ClientCertificate.SerialNum := Buscar_Certificado(Cert.Text)
, me devuelve una cadena vacía. Según me he estado informando, esto solo sirve para cuando el certificado está en el almacén de certificados del equipo, pero no para cuando trabajamos con un fichero PFX/P12.

¿Alguien tiene alguna idea acerca de cargar un .pfx o .p12 en un objeto THTTPRIO, usando HTTPWebNode.ClientCertificate y prescindiendo de la llamada al OnBeforePost?
Buenas a todos.

Hasta ahora, para cargar un certificado desde archivo antes de realizar una petición con un objeto HTTPRIO utilizaba la librería capicom.dll desde el método OnBeforePost. Pero como comenté en su día, el método había cambiado desde la versión 10.3 de Delphi, ya que el Data: Pointer lo cambiaron a Client: THTTPClient.

Pues bien, después de mucho batallar, he conseguido hacerlo funcionar y además prescindiendo de la antigua librería capicom, simplemente usando métodos nativos de la librería crypt32.dll de Windows.

Primeramente, antes de llamar al bloque "implementation" de nuestro código, poner la siguiente línea:

Código Delphi [-]
function PFXImportCertStore(var pPFX: CRYPT_DATA_BLOB; szPassword: LPCWSTR; dwFlags: DWORD): HCERTSTORE; stdcall; external 'Crypt32.dll';

Luego en el método
Código Delphi [-]
HTTPRIOHTTPWebNodeBeforePost(const HTTPReqResp: THTTPReqResp; Client: THTTPClient)
se pone lo siguiente:

Código Delphi [-]
const
     PKCS12_INCLUDE_EXTENDED_PROPERTIES  = $0010;
     CERT_COMPARE_HAS_PRIVATE_KEY        = 21;
     CERT_FIND_HAS_PRIVATE_KEY           = CERT_COMPARE_HAS_PRIVATE_KEY shl CERT_COMPARE_SHIFT;
var
   Almacen: HCERTSTORE;
   Certificado: PCERT_CONTEXT;
   DataBlob: CRYPT_DATA_BLOB;
   PFX: TBytes;
begin
     Almacen := nil;
     Certificado := nil;
     PFX := TFile.ReadAllBytes(Cert.Text);
     Try
        DataBlob.cbData := Length(PFX);
        DataBlob.pbData := @PFX[0];

        // Defino mi almacén con el único certificado seleccionado, en lugar del almacén con todos los certificados de Windows
        Almacen := PFXImportCertStore(DataBlob, PWideChar(Pwd.Text), PKCS12_INCLUDE_EXTENDED_PROPERTIES);
        If not Assigned(Almacen) Then
            Salida.Lines.Add('[ERROR] No se pudo importar el certificado seleccionado.')  //RaiseLastOSError;
        Else
        Begin
             Certificado := CertFindCertificateInStore(Almacen, X509_ASN_ENCODING, 0, CERT_FIND_HAS_PRIVATE_KEY, nil, nil);
             If not Assigned(Certificado) Then
                 Salida.Lines.Add('[ERROR] No se pudo encontrar el certificado digital en el contexto actual, o bien no tiene clave privada.');  //RaiseLastOSError;
        End;
     Finally
            If Assigned(Certificado) Then CertFreeCertificateContext(Certificado);
            If Assigned(Almacen) Then CertCloseStore(Almacen, 0);
     End;
end;

, sabiendo que la ruta completa al certificado .pfx o .p12 está en un campo TEdit llamado 'Cert', y su contraseña en otro TEdit llamado 'Pwd'.

No olviden asignar este método al OnBeforePost del objeto HTTPRIO que realiza la petición al webservice, de lo contrario recibirán el error Received content of invalid Content-Type setting: text/html - SOAP expects "text/xml".

Espero haber ayudado. Saludos.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
TICKET BAI (TicketBAI); Nuevo sistema de la Agencia Tributaria del Pais Vasco keys Internet 4530 02-07-2026 14:09:59
AEAT envio de datos vía Webservice problemas con WSDL CelsoO Internet 11 09-10-2019 20:03:41
webService Soap de la Administración Digital Española notific@ apicito Internet 3 31-01-2017 11:25:28
Error en Webservice funcion envio de sms webmasterplc Delphi para la web 5 25-07-2013 20:10:29
Problemas con envío de XML a un WebService davidvamo Internet 1 13-02-2007 15:49:20


La franja horaria es GMT +2. Ahora son las 08:55:47.


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
Copyright 1996-2007 Club Delphi