Pieza 14 de 64
TrámitePieza nº 0014 de 64

/* DESARROLLO */

El portafirmas de la Diputación de Palencia, la página donde se firman con certificado los documentos que la Diputación envía por correo, está programado para preguntar a un fichero de 380 bytes dónde está su servidor de firma. El fichero contesta con una dirección de pruebas, bajo un rótulo que dice DESARROLLO. La de la propia sede está escrita al lado, tachada.

Dominio
sede.diputaciondepalencia.es
Guardado
31 AGO 2026
Comprobado en vivo
14 SEP 2026
Citas
10 en 4 ficheros guardados
Lectura
unos 4 min
Captura de https://sede.diputaciondepalencia.es/
foto 1La portada de sede.diputaciondepalencia.es el 26 de septiembre de 2026: la sede electrónica de la Diputación de Palencia.Captura del 26 de septiembre de 2026, 16:51 (hora peninsular)

Firmar es lo más solemne que se puede hacer con un ratón. La Diputación manda un documento por correo, quien lo recibe lo abre en el portafirmas, presenta su certificado y estampa una firma que vale lo que valdría su mano. Detrás hay un mecanismo largo: un programa instalado en el ordenador, AutoFirma, que se entiende con la página por un canal propio, y unos servicios en el servidor que preparan la firma, la guardan y la devuelven. La página tiene que decirle a AutoFirma dónde están esos servicios. Lo hace con una dirección.

Captura de https://sede.diputaciondepalencia.es/portafirmas/
foto 2sede.diputaciondepalencia.es/portafirmas/ el 23 de septiembre de 2026, la pantalla de entrada tal como la ve quien va a firmar. Recuadrado, el botón que, según la propia página, empieza la identificación con el certificado. La versión que declara abajo, v1.6.0, es la de la aplicación; el cliente de AutoFirma que carga es el 1.9.0.Captura del 23 de septiembre de 2026, 14:16 (hora peninsular) · el recuadro es nuestro

La dirección está aparte de la aplicación, en un fichero de 380 bytes que la página carga justo después de la aplicación y justo antes del cliente de AutoFirma. Es la manera ordenada de hacerlo: la aplicación se compila y no se toca, y lo que cambia de un despliegue a otro, la dirección del servidor, se deja fuera, en un fichero pequeño que cualquiera puede editar sin recompilar nada. El fichero se llama constantes.js.

1de 10sede.diputaciondepalencia.es/portafirmas/líneas 20–21 de 25
Copia
archivo
Guardado
31 ago 2026
Peso
789 B
sha256
d3a87216e487…
17      continue.</strong>
18  </noscript>
19  <div id="app"></div>
20  <script src="/portafirmas/js/constantes.js"></script>
21  <script src="/portafirmas/js/autoscript.js"></script>
22  
23</body>
1La página del portafirmas carga las constantes y, detrás, el cliente de AutoFirma. La aplicación va en la línea 10.

Cabe entero en una pantalla. Tras la línea que abre la lista de constantes vienen dos líneas de nota, de quien lo escribió para quien lo lea después, en mayúsculas: para pruebas, usar siempre una IP o un nombre de dominio, nunca localhost; si no, AutoFirma bloqueará la firma por seguridad. Es una nota útil, escrita para las pruebas. Luego viene el rótulo, un comentario solo en su línea: DESARROLLO.

2de 10sede.diputaciondepalencia.es/portafirmas/js/constantes.jslíneas 4–5 de 9
Copia
archivo
Guardado
31 ago 2026
Peso
380 B
sha256
6ef30413457c…
Tapado
1 tramos ▒
1/* eslint-disable */
2
3var Constants = {
4// IMPORTANTE: PARA PRUEBAS, USAR SIEMPRE UNA IP O NOMBRE DE DOMINIO, NUNCA 'LOCALHOST' O '127.0.0.1'
5// SI NO SE HACE ASI, AUTOFIRMA BLOQUEARA LA FIRMA POR SEGURIDAD
6
7  /* DESARROLLO */
8  URL_BASE_SERVICES: 'https://test.▒▒▒▒▒▒.com:8443', //,'https://sede.diputaciondepalencia.es/autofirma' 'https://seu.santcugat.cat/autofirma/'
2La nota para quien haga pruebas. Con el rótulo y la constante, es casi todo el fichero.
▒Los tramos ▒ de esta cita no están así en el fichero: los tapa el museo. Se sustituye cada letra y cada cifra por un bloque, sin cambiar la longitud, para no publicar un identificador de sesión ni una dirección de una red interna. Todo lo demás de la cita es literal.

Y debajo, la única constante del fichero: la dirección base de los servicios, apuntando a un servidor cuyo nombre empieza por test, en un dominio comercial que no es el de la sede, por el puerto 8443. El nombre del dominio lo tapamos nosotros; en el fichero está entero. En la misma línea, detrás de una coma, hay dos barras. En este lenguaje dos barras convierten en comentario todo lo que viene después.

3de 10sede.diputaciondepalencia.es/portafirmas/js/constantes.jslínea 8 de 9
Copia
archivo
Guardado
31 ago 2026
Peso
380 B
sha256
6ef30413457c…
Tapado
1 tramos ▒
5// SI NO SE HACE ASI, AUTOFIRMA BLOQUEARA LA FIRMA POR SEGURIDAD
6
7  /* DESARROLLO */
8  URL_BASE_SERVICES: 'https://test.▒▒▒▒▒▒.com:8443', //,'https://sede.diputaciondepalencia.es/autofirma' 'https://seu.santcugat.cat/autofirma/'
9}
3El rótulo y la constante. El nombre del dominio comercial lo tapamos nosotros; en el fichero está entero.

Y lo que viene después es la dirección de la propia sede: sede.diputaciondepalencia.es/autofirma. La dirección buena está escrita. Está en la línea correcta del fichero correcto, en el servidor correcto. Está tachada: las dos barras la dejan dentro del comentario, con una coma delante, y para la aplicación no existe. Usarla no pide buscarla, pide reordenar la línea. Tal como está, manda la de pruebas.

4de 10sede.diputaciondepalencia.es/portafirmas/js/constantes.jslínea 8 de 9
Copia
archivo
Guardado
31 ago 2026
Peso
380 B
sha256
6ef30413457c…
Tapado
1 tramos ▒
5// SI NO SE HACE ASI, AUTOFIRMA BLOQUEARA LA FIRMA POR SEGURIDAD
6
7  /* DESARROLLO */
8  URL_BASE_SERVICES: 'https://test.▒▒▒▒▒▒.com:8443', //,'https://sede.diputaciondepalencia.es/autofirma' 'https://seu.santcugat.cat/autofirma/'
9}
4Las dos barras y, dentro del comentario, la coma y la dirección de la propia sede.

En la misma línea, tras la de Palencia, hay una tercera: seu.santcugat.cat/autofirma. Seu es sede en catalán; es la sede electrónica del Ayuntamiento de Sant Cugat del Vallès. No sabemos por qué está ahí y no lo vamos a adivinar. Lo que sabemos es lo que dice la línea: el fichero de constantes del portafirmas de Palencia lleva escrita, comentada, la dirección /autofirma de la sede de Sant Cugat.

5de 10sede.diputaciondepalencia.es/portafirmas/js/constantes.jslínea 8 de 9
Copia
archivo
Guardado
31 ago 2026
Peso
380 B
sha256
6ef30413457c…
Tapado
1 tramos ▒
5// SI NO SE HACE ASI, AUTOFIRMA BLOQUEARA LA FIRMA POR SEGURIDAD
6
7  /* DESARROLLO */
8  URL_BASE_SERVICES: 'https://test.▒▒▒▒▒▒.com:8443', //,'https://sede.diputaciondepalencia.es/autofirma' 'https://seu.santcugat.cat/autofirma/'
9}
5La tercera dirección de la línea: la sede de otro ayuntamiento.

¿Y qué hace la aplicación con la constante? La usa en cuatro sitios, y los cuatro son el mismo gesto. Al identificarse (el portafirmas no pide contraseña, pide que se firme un mensaje con el certificado) llama a AutoFirma con un parámetro que se construye con esa dirección. Termina en el servicio de firma trifásica, el modo en que AutoFirma reparte el trabajo de firmar con un servidor. En tres sitios más pasa a AutoFirma otras dos direcciones, construidas igual: el servicio que almacena las firmas y el que las recupera. Todas nacen de la misma constante. La de DESARROLLO.

6–7de 10sede.diputaciondepalencia.es/portafirmas/assets/index.f506ebe4.jslínea 14 de 81
Copia
archivo
Guardado
31 ago 2026
Peso
245,7 kB
sha256
cd0a6a255257…
11* vuex v3.6.2
12* (c) 2021 Evan You
13* @license MIT
14…&t!==""?t:null,"SHA256withRSA","CAdES",`serverUrl=${Constants.URL_BASE_SERVICES}/afirma-server-triphase-signer/SignatureService6`,(r,n)=>{this.$store.dispatch("auth/login",{signature:r,certificate:n,nif:this.nif,message:e,tipoLogin:this.tipoLogin,nifRepresentado:this.nifRepresentado}).then(()=>{this.error?(this.nifError=this.error,this.$alert(this.$t("login.errorLogin")),AutoScript.cargarAppAfirma(),AutoScript.checkTime(AutoScript.CHECKTIME_RECOMMENDED,6e4),AutoScript.setServlets(Constants.URL_BASE_SERVICES+"/afirma-signature-storage/StorageService",Constants.URL_BASE_SERVICES+"/afirma-signature-retriever/RetrieveService"),AutoScript.setStickySignatory(!0),this.cargandoAutofirma=!1):this.loginOptions&&this.loginOptions.length>1?(this.$router.push({name:"ElegirEntidad"}),this.cargandoAutofirma=!1):(this.$route.query.redirect?this.$router.push(this.$route.query.redirect):this.$router.push({name:"DocumentosPendientes"}),this.cargandoAutofirma=!1)}).catch(i=>{AutoScript.cargarAppAfirma(),AutoScript.checkTime(AutoScript.CHECKTIME_RECOMMENDED,6e4),AutoScript.setServlets(Constants.URL_BASE_SERVICES+"/afirma-signature-storage/StorageService",Constants.URL_BASE_SERVICES+"/afirma-signature-retriever/RetrieveService"),AutoScript.setStickySignatory(!0),this.nifError=this.error,this.cargandoAutofirma=!1})},(r,n)=>{this.nifError=n,this.cargandoAutofirma=!1})},validateNif(e){const t=/^(\d{8})([A-Za-z])$/,r="TRWAGMYFPDXBNJZSQVHLCKET";if(!this.verificaNif||t.test(e)){let n=e.substr(0,e.length-1);const i=e.substr(e.length-1,1);n=n%23,r.substring(n,n+1)!==i.toUpperCase()||(this.nifError="")}}},watch:{nif(e){this.nif=e,this.debounceValidateNif(e)}},computed:{...Jo({error:e=>e.auth.error,loginOptions:e=>e.auth.loginOptions}),tipoLogin(){return this.rol==="empleadoPublico"||this.rol==="empleadoPublicoPseudonimo"?"I":this.rol==="personaFisicaRepresentacion"?"ER":"E"},verificaNif(){return this.rol!=="empleadoPublicoPseudonimo"},mostrarInputRepresentacion(){return this.rol==="personaFisicaRepresentacion"}},created(){AutoScript.setStickySignatory(!1),AutoScript.cargarAppAfirma(),AutoScript.checkTime(AutoScript.CHECKTIME_RECOMMENDED,6e4),AutoScript.setServlets(Constants.URL_BASE_SERVICES+"/afirma-signature-storage/StorageService"7,Constants.URL_BASE_SERVICES+"/afirma-signature-retriever/Re…
15* vue-i18n v8.27.2
16* (c) 2022 kazuya kawaguchi
17* Released under the MIT License.
6La identificación: se firma un mensaje con el certificado y el servidor de firma trifásica se construye con la constante. La aplicación está compilada en líneas de miles de caracteres; enseñamos el tramo.
7Una de las tres llamadas que fijan dónde se almacenan y se recuperan las firmas. Las otras dos son idénticas.

El cliente de AutoFirma que carga la propia página explica con sus palabras qué son esas dos direcciones: «las rutas de los servlets encargados de almacenar y recuperar las firmas de los dispositivos moviles», los programas del servidor que guardan y devuelven las firmas hechas desde un móvil. Y tiene su propia opinión sobre dónde deberían estar. Si nadie le dice otra cosa, las construye sobre la dirección de la página en la que está. La sede misma. Ese es el valor por defecto. La aplicación lo sustituye, a propósito, por el del fichero.

8de 10sede.diputaciondepalencia.es/portafirmas/js/autoscript.jslíneas 4275–4277 de 5.510
Copia
archivo
Guardado
31 ago 2026
Peso
222,8 kB
sha256
dd77491f6e51…
4272}
4273
4274/**
4275 * Establece las rutas de los servlets encargados de almacenar y recuperar las firmas de los dispositivos moviles.
4276 */
4277function setServlets (storageServlet, retrieverServlet) {
4278    storageServletAddress = storageServlet;
4279    retrieverServletAddress = retrieverServlet;
4280}
8El cliente oficial de AutoFirma explica qué son las dos direcciones.
9de 10sede.diputaciondepalencia.es/portafirmas/js/autoscript.jslíneas 3841–3842 de 5.510sigue en el mismo fichero · la línea de al lado
3838        storageServletAddress = clientAddress + "/afirma-signature-storage/StorageService";
3839    }
3840} else {
3841    retrieverServletAddress = window.location.origin + "/afirma-signature-retriever/RetrieveService";
3842    storageServletAddress = window.location.origin + "/afirma-signature-storage/StorageService";
3843}
3844
3845/**
9El valor por defecto del cliente: la dirección de la página en la que está. La aplicación lo sustituye por la constante.
10de 10sede.diputaciondepalencia.es/portafirmas/js/autoscript.jslínea 26 de 5.510sigue en el mismo fichero · la línea de al lado
24var AutoScript = ( function ( window, undefined ) {
25
26        var VERSION = "1.9.0";
27        var VERSION_CODE = 3;
28
29        /* ========== DEPRECADO: No se utiliza, pero se mantiene por compatibilidad con los despliegues del MiniApplet. */
10La versión del cliente de AutoFirma que carga la página.

El servidor que entrega el fichero es moderno y va bien vestido: cabeceras que prohíben incrustar la página en otra y que fuerzan HTTPS durante un año. Otras apagan la geolocalización, el micrófono y la cámara. Cinco cabeceras de seguridad para servir un fichero de 380 bytes que dice DESARROLLO. Ninguna de las cinco lee lo que entrega. Según ese mismo servidor, el fichero se modificó por última vez el 3 de julio de 2025.

Lo guardamos el 31 de agosto de 2026 y lo volvimos a pedir el 14 y el 23 de septiembre: los mismos 380 bytes, byte a byte, y la misma fecha de modificación. Más de catorce meses en el sitio, con la dirección buena a un lado, detrás de las barras. Mientras tanto, cada vez que alguien abre el portafirmas la página carga el fichero, y cuando la aplicación pregunta dónde firmar, el fichero contesta lo mismo: en el servidor de pruebas.

La dirección correcta está escrita en la línea correcta del fichero correcto, del lado equivocado de dos barras.

Lo que decimos
  • La página /portafirmas/ de la sede carga un fichero de constantes de 380 bytes cuya única constante, bajo el comentario DESARROLLO, apunta a un servidor test de un dominio comercial ajeno a la sede por el puerto 8443.
  • En la misma línea, comentadas, van la dirección de la propia sede y la de la sede de Sant Cugat del Vallès.
  • La aplicación usa esa constante para construir el servidor de firma trifásica al identificarse y los servicios de almacenar y recuperar firmas en tres sitios; el cliente de AutoFirma usaría por defecto la dirección de la propia página.
  • El servidor declara el fichero modificado el 3 de julio de 2025.
  • La copia del 31 de agosto de 2026, la del 14 de septiembre y la respuesta del 23 de septiembre son idénticas.
Lo que no decimos
  • Que ninguna firma o documento haya viajado a ese servidor.
  • Que el servidor de pruebas exista o responda: no le hemos enviado nada.
  • Quién es el titular del dominio comercial, cuyo nombre tapamos.
  • Por qué está ahí la dirección de Sant Cugat.
  • Que el portafirmas esté en uso ni cuántas personas lo usan.
  • Que el fichero sea inseguro, ni qué haría AutoFirma al encontrarse con esa dirección.
Procedencia

De dónde sale cada cita

Cada trozo de código de esta ficha está en un fichero guardado tal como lo entregó el servidor, con su huella (sha256) y su hora. Las citas entre «» se comprueban por programa contra ese fichero antes de publicar.

Desgobierno Digital · https://desgobiernodigital.com/piezas/palencia-desarrollo/ · copia impresa de la edición generada el 19 de octubre de 2026 · Un proyecto de BQuant · correcciones: @Gsnchez