Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Proyecto SIF/Veri*Factu/Ley Antifraude > General/Noticias
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-07-2025
espinete espinete is offline
Miembro
 
Registrado: mar 2009
Posts: 662
Poder: 18
espinete Va camino a la fama
Uso del Certificado Digital en red

Estamos pensando en facilitar al usuario final la configuración y el uso del certificado digital de su empresa, de forma que no tengan que instalarlo en todos los PCs de la red/empresa, sino que baste con tenerlo en el Servidor (que es quien hará los envíos a VeriFactu).

Pero me encuentro con un problema, y es que el componente HTTPRIO solo admite asignar el certificado desde el almacén de certificados de Windows (usando el nº de serie, etc.), no desde archivo pdf, cer, etc..

Ese componente lo uso además para la Validación de NIF de la AEAT, así que la cosa se me complica. He usado los componentes de SecureBlackbox para guardar el certificado en la BD y así poder reutilizarlo desde cualquier PC, pero tengo el problema del HTTPRIO, que no puedo asignarlo en tiempo real porque siempre necesitará que esté instalado en el almacén de Windows, y no en la BD o en un archivo externo.

¿Alguien ha dado con la solución? ¿O es imposible y se requiere que en todos los PCs esté instalado el certificado?

La verdad es que le facilitaría mucho las cosas al usuario final, pero bueno, si no hay manera, tampoco quiero volverme yo loco con tanta automatización. No creo que merezca la pena.
Responder Con Cita
  #2  
Antiguo 26-07-2025
Avatar de YellowStone
YellowStone YellowStone is offline
Miembro
 
Registrado: feb 2007
Ubicación: Adeje
Posts: 165
Poder: 20
YellowStone Va por buen camino
Buenas:

HTTPRIO si permite cargar el certificado desde un fichero PFX que puedes tener en cualquier sitio de la red. Juraría que hay varios ejemplos aquí, al menos en el foro de Ticketbai.

Se trata de controlar el evento de HTTPRIO.HTTPWebNode.OnBeforePost.

Por ejemplo:

Código Delphi [-]
procedure TBeforeEx.OnBeforePost(const HTTPReqResp: THTTPReqResp; Data: Pointer);
var
  Cert         : ICertificate2;
  CertContext  : ICertContext;
  PCertContext : PCCERT_CONTEXT;
  FTimeout: Cardinal;
begin
  FTimeout := 12000;

  InternetSetOption(Data, INTERNET_OPTION_CONNECT_TIMEOUT, Pointer(@FTimeout), SizeOf(FTimeout));
  InternetSetOption(Data, INTERNET_OPTION_RECEIVE_TIMEOUT, Pointer(@FTimeout), SizeOf(FTimeout));
  InternetSetOption(Data, INTERNET_OPTION_SEND_TIMEOUT, Pointer(@FTimeout), SizeOf(FTimeout));

  Cert := CoCertificate.Create;
  try
    Cert.Load(FicheroCert, ClaveCert, CAPICOM_KEY_STORAGE_EXPORTABLE, CAPICOM_LOCAL_MACHINE_KEY);
    if cert.ValidToDate < date then
      begin
        MessageDlg('O Certificado Digital '+trim(FicheroCert)+' está caducado.', mtWarning, [mbOk], 0);
      end;
    CertContext := Cert as ICertContext;
    CertContext.Get_CertContext( Integer( PCertContext ) );
    //Insertamos en el XML la identificación del certificado
    // INTERNET_OPTION_CLIENT_CERT_CONTEXT = 84
    // En Delphi 2007 no existe esta constante en WinInet.
    if InternetSetOption( Data, 84, PCertContext, Sizeof( CERT_CONTEXT )) = False then
      begin
        MessageDlg('Error anexando el Certificado Digital.', mtError, [mbOk], 0);
      end;
  except
    on E: Exception do
      begin
        MessageDlg('Error cargado el Certificado Digital:'+#13#10+#13#10+E.Message, mtError, [mbOk], 0);
      end;
  end;

end;

Así lo usamos en Delphi 2007, así que supongo que en versiones posteriores será más fácil.

Luego hay algunos tipos de certificados, que dependiendo de la entidad certificadora, tendrás que buscar el correcto dentro de cada pfx, por ejemplo los de IANATACA, en los de la FNMT no.

Última edición por YellowStone fecha: 26-07-2025 a las 14:27:26.
Responder Con Cita
Respuesta



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
La AEAT no me acepta el certificado digital FacilIng Envío de registros y sus respuestas 18 10-09-2025 17:59:53
IdSSL y certificado digital el-otro Internet 1 03-01-2024 11:07:43
REST CLIENT con certificado digital keys Internet 11 24-10-2019 13:38:06
Agregar Certificado Digital carlos gonzalez Varios 1 16-08-2019 09:37:15
Problemas con certificado digital Paulao Varios 3 26-09-2011 17:00:46


La franja horaria es GMT +2. Ahora son las 05:29:19.


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