# Instalacion de SICEM Gramaju con publicador verificado

SICEM Gramaju se distribuye por ClickOnce desde:

`https://winapp.nicasoftware.net/gramaju/`

La aplicacion esta firmada por `NicaSoftware`. Como la firma fue emitida por la autoridad interna de NicaSoftware y no por una autoridad comercial incluida en Windows, cada computadora cliente debe registrar una sola vez los certificados publicos de confianza.

El certificado HTTPS de Certbot protege la conexion con el servidor, pero no identifica al fabricante del programa. ClickOnce valida por separado la firma de codigo.

## Procedimiento recomendado en cada computadora

1. Descargue `NicaSoftware-ClickOnce-Trust.zip` desde la pagina de instalacion.
2. Extraiga todo el contenido del ZIP en una carpeta. No ejecute los archivos dentro del ZIP sin extraerlos.
3. Ejecute `Instalar-Confianza-NicaSoftware.cmd`.
4. Acepte la solicitud de Control de cuentas de usuario (UAC). Se requieren permisos de administrador para registrar la confianza para todo el equipo.
5. Confirme que aparezca el mensaje `NicaSoftware quedo registrado correctamente como publicador de confianza`.
6. Cierre cualquier dialogo anterior de ClickOnce y vuelva a abrir la pagina de instalacion.
7. Presione `Instalar o actualizar SICEM`.

## Ejecucion manual equivalente

Desde PowerShell puede ejecutar:

```powershell
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\Install-NicaSoftwarePublisher.ps1
```

El script se eleva por UAC automaticamente cuando no se inicio como administrador.

## Comprobacion tecnica

En PowerShell, estos dos comandos deben devolver los certificados indicados:

```powershell
Get-Item 'Cert:\LocalMachine\Root\B3E042A227E45C91FB02341E5D521E254E372649'
Get-Item 'Cert:\LocalMachine\TrustedPublisher\82432AE84C0CCC50D14FEB5B3DE1548ED5374257'
```

El script valida las huellas antes de modificar los almacenes. Los certificados distribuidos son publicos y no contienen claves privadas.

## Certificados vigentes

- Autoridad interna: `CN=NicaSoftware Internal Code Signing Root CA, O=NicaSoftware, C=NI`
- Huella de la raiz: `B3E042A227E45C91FB02341E5D521E254E372649`
- Publicador: `CN=NicaSoftware, O=NicaSoftware, C=NI`
- Huella del publicador: `82432AE84C0CCC50D14FEB5B3DE1548ED5374257`
- Uso del publicador: firma de codigo
- Vigencia del publicador: 3 de agosto de 2026 al 3 de agosto de 2031

## Custodia de claves privadas

Las claves privadas permanecen exclusivamente en la computadora de publicacion de NicaSoftware. No se incluyen en esta carpeta, en el ZIP de clientes ni en el servidor web. Deben respaldarse en archivos PFX cifrados, conservarse fuera del repositorio y almacenarse por separado de sus contrasenas.

## Nota para futuras publicaciones

Este proyecto apunta a .NET Framework 3.5. Sus manifiestos ClickOnce usan el formato de firma SHA-1 que entiende esa version. No configure `ManifestTimestampUrl` con un servicio moderno que devuelva una marca de tiempo SHA-256: el verificador de `System.Deployment` 3.5/4.x puede devolver `0x80091007` y mostrar `Unknown Publisher`, aunque Mage moderno indique que la firma es valida.

La publicacion actual se firma sin marca de tiempo y el certificado del publicador vence el 3 de agosto de 2031. Antes de esa fecha debe renovarse el certificado y publicarse una version nueva. Si la aplicacion se migra a un .NET Framework moderno, se debe volver a evaluar SHA-256 y la marca de tiempo.
