> For the complete documentation index, see [llms.txt](https://doc.velneo.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://doc.velneo.com/velneo/funcionalidades-comunes/certificado-de-firma-digital-para-componentes-windows.md).

# Firma digital de los componentes de Velneo

Velneo firma digitalmente los componentes que distribuye para escritorio y móvil. La firma permite comprobar dos cosas:

* **Procedencia**: el software lo ha publicado Velneo, S.A. y no un tercero.
* **Integridad**: el fichero no se ha modificado desde que Velneo lo firmó. Cualquier alteración posterior invalida la firma y el sistema operativo lo detecta.

El mecanismo depende de cada plataforma, porque cada sistema operativo tiene su propio modelo de confianza. Este es el estado actual:

| Plataforma                | ¿Se firma? | Tipo de firma                                                                         | Titular      |
| ------------------------- | ---------- | ------------------------------------------------------------------------------------- | ------------ |
| Windows                   | Sí         | Authenticode (SHA-256) con sello de tiempo, mediante Microsoft Azure Artifact Signing | VELNEO SA    |
| macOS                     | Sí         | Apple Developer ID, con Hardened Runtime y notarización de Apple                      | Velneo, S.A. |
| iOS                       | Sí         | Firma de distribución de Apple (App Store)                                            | Velneo, S.A. |
| Android                   | Sí         | Firma de aplicación Android; en Google Play, mediante Play App Signing                | Velneo, S.A. |
| Linux                     | No         | Distribución por HTTPS desde el dominio de Velneo                                     | —            |
| vClient web (WebAssembly) | No aplica  | Servido por HTTPS desde el dominio de Velneo                                          | —            |
| Velneo Cloud              | No aplica  | Lo instala y mantiene Velneo en su infraestructura                                    | —            |

### Windows

Se firman todos los instaladores de Velneo para Windows y los ejecutables y librerías propios de Velneo que contienen:

* Los ejecutables de los componentes (vClient, vDevelop, vServer, vAdmin, vDataClient, vInstallBuilder, vPacker, vTranslator) y vUpdater.
* Las librerías propias de Velneo (`VCL*.dll`).
* El módulo de Apache de vModApache.
* El driver ODBC de Velneo.
* El instalador y el desinstalador de cada componente.

Las librerías de terceros que se distribuyen junto a Velneo (Qt, OpenSSL, etc.) conservan la firma con la que las publica su fabricante, si la tienen; Velneo no las vuelve a firmar.

#### Certificado

La firma se realiza con **Microsoft Azure Artifact Signing** (antes llamado *Trusted Signing*), el servicio de firma de código de Microsoft. La clave privada se custodia en un módulo de seguridad hardware (HSM) de Microsoft y nunca sale de él, como exigen las normas actuales del CA/Browser Forum para la firma de código.

Los datos del firmante son:

```
CN=VELNEO SA, O=VELNEO SA, L=O Porriño, S=Pontevedra, C=ES
```

Los instaladores llevan esta firma desde la versión 37. Las versiones anteriores están firmadas con el certificado anterior de Velneo, S.A., emitido por SSL.com.

#### Validez de la firma

Todas las firmas llevan **sello de tiempo** (*timestamp*) con algoritmo SHA-256. El sello de tiempo certifica que la firma se hizo mientras el certificado era válido, de modo que la firma sigue siendo válida aunque el certificado caduque después. Los certificados de Azure Artifact Signing son de corta duración (unos días) y se renuevan automáticamente; por eso es normal ver en las propiedades de la firma una fecha de caducidad del certificado anterior a la fecha actual.

La caducidad del certificado no impide, por tanto, instalar ni ejecutar los componentes. Aun así, se recomienda usar siempre la última versión de Velneo.

#### Cómo comprobar la firma

* **Desde el explorador de Windows**: botón derecho sobre el instalador o el ejecutable › *Propiedades* › pestaña *Firmas digitales*. Debe aparecer `VELNEO SA` y, en *Detalles*, «Esta firma digital es correcta».
* **Desde PowerShell**:

  ```powershell
  Get-AuthenticodeSignature "C:\ruta\velneo-win64-vclient-setup.exe" | Format-List
  ```

  El campo `Status` debe ser `Valid` y `SignerCertificate` debe contener `O=VELNEO SA`.
* **Con signtool** (Windows SDK):

  ```
  signtool verify /pa /v "C:\ruta\velneo-win64-vclient-setup.exe"
  ```

#### SmartScreen

Los certificados de *Azure Artifact Signing* están validados por Microsoft, lo que facilita que Windows SmartScreen reconozca a Velneo como editor. Aun así, SmartScreen calcula la reputación de cada fichero descargado, y una versión recién publicada puede mostrar el aviso durante los primeros días.

### macOS

Las aplicaciones de Velneo para macOS se distribuyen en imágenes de disco (`.dmg`) y cumplen los requisitos de Gatekeeper:

* **Firma Developer ID**: cada aplicación, y todo el código que contiene (frameworks, librerías y plugins), está firmado con el certificado *Developer ID Application: Velneo, S.A. (FBYM36A9SH)* emitido por Apple.
* **Hardened Runtime** activado y firma con sello de tiempo de Apple.
* **Notarización**: Apple analiza cada imagen de disco antes de su publicación, y el resultado (*ticket*) queda grapado en el propio `.dmg`. Así Gatekeeper puede validarlo incluso sin conexión a internet.

#### Cómo comprobar la firma

Desde el Terminal, sobre la aplicación ya copiada a *Aplicaciones*:

```bash
codesign --verify --deep --strict --verbose=2 /Applications/vClient.app
codesign -dv --verbose=4 /Applications/vClient.app   # muestra el titular: Velneo, S.A. (FBYM36A9SH)
spctl --assess --type execute --verbose /Applications/vClient.app   # debe indicar «accepted» y «Notarized Developer ID»
```

Y sobre la imagen de disco descargada:

```bash
xcrun stapler validate velneo-mac-vclient.dmg
```

### iOS

vClient para iOS se distribuye exclusivamente a través de la App Store. La aplicación está firmada con el certificado de distribución de Velneo, S.A. (equipo de desarrollo `FBYM36A9SH`), y Apple la verifica y la vuelve a firmar al publicarla. iOS no permite instalar aplicaciones con una firma no válida, así que no hace falta ninguna comprobación por parte del usuario.

### Android

vClient para Android se distribuye a través de Google Play. Velneo publica la aplicación con **Play App Signing**: Velneo firma el paquete con su clave de subida, Google comprueba que procede de Velneo y entrega a los dispositivos la aplicación firmada con la clave de la aplicación, que custodia Google. Android rechaza instalar una actualización cuya firma no coincida con la de la aplicación instalada.

### Linux

Los componentes de Velneo para Linux se distribuyen como archivos comprimidos (`.tar.gz`) y no llevan firma digital, ya que Linux no tiene un mecanismo de firma de ejecutables común a todas las distribuciones. Su procedencia la garantiza la descarga por HTTPS desde los servidores de Velneo.

### vClient Web (WebAssembly) y Velneo Cloud

[vClient Web](/velneo-vclient-web.md) se ejecuta en el navegador y se descarga siempre por HTTPS desde los dominios de Velneo; es el certificado TLS del dominio el que garantiza su procedencia e integridad. En Velneo Cloud, los componentes los instala y actualiza Velneo en su propia infraestructura, sin que el cliente descargue ningún instalador.
